|
Socket接收字符流出现乱码怎么解决 ?服务端是Java发送的字符编码是UTF-8,以下两种方法均不行:
[code=csharp]public static string UTF8ToGB2312(string str)
{
try
{
Encoding utf8 = Encoding.GetEncoding("utf-8");
Encoding gb2312 = Encoding.GetEncoding("gb2312");//Encoding.Default ,936
byte[] temp = utf8.GetBytes(str);
byte[] temp1 = Encoding.Convert(utf8, gb2312, temp);
string result = gb2312.GetString(temp1);
return result;
}
catch (Exception ex)//(UnsupportedEncodingException ex)
{
Console.WriteLine(ex.ToString());
return null;
}
}
public static string GB2312ToUTF8(string str)
{
try
{
Encoding uft8 = Encoding.GetEncoding("utf-8");
Encoding gb2312 = Encoding.GetEncoding("gb2312");
byte[] temp = gb2312.GetBytes(str);
Console.WriteLine("gb2312的编码的字节个数:" + temp.Length);
for (int i = 0; i < temp.Length; i++)
{
Console.WriteLine(Convert.ToUInt16(temp).ToString());
}
byte[] temp1 = Encoding.Convert(gb2312, uft8, temp);
Console.WriteLine("uft8的编码的字节个数:" + temp1.Length);
for (int i = 0; i < temp1.Length; i++)
{
Console.WriteLine(Convert.ToUInt16(temp1).ToString());
}
string result = uft8.GetString(temp1);
return result;
}
catch (Exception ex)//(UnsupportedEncodingException ex)
{
Console.WriteLine(ex.ToString());
return null;
}
}[/code] |
|