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);
}
具體原因我推測是因為數據過來是ISO-8859-1,但.Net底層處理成了Gb2312了,所以需要通過兩種編碼轉換成Unicode才能正常顯示,聽說在Java中只要new String(s.getBytes("ISO-8859-1"),"gb2312");就OK了。
---------------------------------------------------------
專注移動開發
Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2008-02-27 21:30
TiGERTiAN 閱讀(3566)
評論(11) 編輯 收藏 所屬分類:
DotNet 、
MapXtreme