核心提示:publicstaticstringGetEncodingString(stringsrcString) { Encodinge8859Encode=Encoding.GetEncoding(&quo
public static string GetEncodingString(string srcString)
{
Encoding e8859Encode = Encoding.GetEncoding("iso-8859-1");
Encoding srcEncode = Encoding.GetEncoding("gb2312");
Encoding dstEncode = Encoding.Unicode;
byte[] srcBytes = e8859Encode.GetBytes(srcString);//用iso-8859-1去轉換源字符串
byte[] dstBytes = Encoding.Convert(srcEncode, dstEncode, srcBytes);//但是,是從gb2312轉到unicode的
char[] dstChars = new char[dstEncode.GetCharCount(dstBytes, 0, dstBytes.Length)];
dstEncode.GetChars(dstBytes, 0, dstBytes.Length, dstChars, 0);
return new string(dstChars);
}具體原因我推測是因為數據過(guò)來(lái)是ISO-8859-1,但.Net地層格處理成了Gb2312了,所以需要通過(guò)兩種編碼轉換成Unicode才能正常顯示,聽(tīng)說(shuō)在Java中只要new String(s.getBytes("ISO-8859-1"),"gb2312");就OK了。
轉換成ISO
public static string GetISOEncodedString(string srcString)
{
if(bDBInfor) {
Encoding e8859Encode = Encoding.GetEncoding("iso-8859-1");
Encoding srcEncode = Encoding.Unicode;
Encoding dstEncode = Encoding.GetEncoding("gb2312");
byte[] srcBytes = srcEncode.GetBytes(srcString);//用Unicode去轉換源字符串
byte[] dstBytes = Encoding.Convert(srcEncode, dstEncode, srcBytes);//但是,是從gb2312轉到unicode的
char[] dstChars = new char[e8859Encode.GetCharCount(dstBytes, 0, dstBytes.Length)];
e8859Encode.GetChars(dstBytes, 0, dstBytes.Length, dstChars, 0);
return new string(dstChars);
}
return srcString;
}
本篇文章來(lái)源于GIS動(dòng)力站|www.gispower.org 原文鏈接:
http://www.gispower.org/article/dev/2008/109/08109102228E52C31HA19IE98G31HK8.html