gb2312转utf-8的问题
private string Gb2312ToUtf8(string str)
{
byte[] getBt = Encoding.GetEncoding( "GB2312 ").GetBytes(str);
return Encoding.GetEncoding( "utf-8 ").GetString(getBt);
}
页面传的值是汉字。
如:http://www.abc.com/空调.html,项目是采用gb2312编码的(不能改,会影响整个项目),实际地址是:http://www.abc.com/Product.aspx?keywords=空调。
我把传过来的汉字转换成utf-8编码形式,似乎没有问题。
但是当我传奇数个汉字的时候,问题就出现了,发现少了一个字。
如:http://www.abc.com/空调机.html 获得的值就是空调,偶数个汉字没有问题,能正常获取。这是什么问题?有没有其它的gb2312转utf-8的方法?
[解决办法]
private string Gb2312ToUtf8(string str) // 实际上 C# 中字符创永远是按 Unicode 表示的
{
byte[] getBt = Encoding.GetEncoding( "GB2312 ").GetBytes(str); // 这里的字节编码是按 GB2312
return Encoding.GetEncoding( "utf-8 ").GetString(getBt); // GB2312 > > utf-8 ????
}
不知道 lZ 你这么样处理有什么效果?
假如,你要转换,应该是,得到 GB2312 的字节数组,然后转换成 System.String ,再转换成 utf-8 的字节数组,这样才有意义,
否则 对应 System.String 你转来专区,它还是 Unicode
[解决办法]
try: private string Gb2312ToUtf8(string str) { byte[] getBt = Encoding.GetEncoding( "GB2312 ").GetBytes(str); getBt = System.Text.Encoding.Convert(Encoding.GetEncoding( "GB2312 "), Encoding.UTF8, getBt); return Encoding.GetEncoding( "utf-8 ").GetString(getBt); }
[解决办法]
关注