日期:2014-05-18  浏览次数:20416 次

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); }
------解决方案--------------------
关注