Winfrom程序,获取的字符串,编码是GBK,例如“緥”是“设”,“Km”是“测”,
如何把此类字符串转换成正常文字(中文,数字,英文)。//以下只能转中文
byte[] buff = Encoding.GetEncoding("GBK").GetBytes("緥2");
string strs=Encoding.Unicode.GetString(buff);

解决方案 »

  1.   


    你这里的“緥”和“Km”,估计是强制转换出来的,本来的编码可能是两个字节表示一个文字的,给你硬邦邦的拆成了两个字符"Km"出来的。是这样吗?
      

  2.   

    对方接口定义字符集编码GBK;例如对方发了一个字:测,我程序收到就是Km
      

  3.   

    好拉,不要纠结于这个拉。求解拉
    我举例更正:
    byte[] buff = Encoding.GetEncoding("GBK").GetBytes("緥");
    string strs=Encoding.Unicode.GetString(buff);
    //输出的strs是设byte[] buff = Encoding.GetEncoding("GBK").GetBytes("Km");
    string strs=Encoding.Unicode.GetString(buff);
    //输出的strs是测
      

  4.   

    所谓的“转换”基本上都是这样的var buffer = new byte[] { 49, 50, 51, 52 };
    var strs = Encoding.GetEncoding("GBK").GetString(buffer);
    至于说你怎么会曲折地去整出“緥2”来,我觉得这本身就是很诡异的事情。你从文件或者网络上读取到的GBK数据,不是byte[]形式的么?你的哪一种应用程序会得到“緥2”这个东西出来?
      

  5.   

    测试过程:
    1、对方测试程序,输入“设”,发送,我方程序,接收到的原始字符串是“緥”,经过转换是设;
    2、对方测试程序,输入“测”,发送,我方程序,接收到的原始字符串是“Km”,经过转换是测;
    3、对方测试程序,输入“测试”,发送,我方程序,接收到的原始字符串是“Km諎”,经过转换是测试;
    4、对方测试程序,输入“测1”,发送,我方程序,接收到的原始字符串是“Km1”,经过转换是测口;
      

  6.   

    var s = "1234";
    var data = Encoding.GetEncoding("GBK").GetBytes(s);
    var result = Encoding.GetEncoding("GBK").GetString(data);这样才是和逻辑的。首先第二行代码把unicode转gbk,然后第三行代码把gbk转为unicode。而你的代码,先把unicode转为gbk,接下来就不认buff中是gbk、反而认为它是unicode编码的,这自然就会出错。对方以什么编码“发送”,我方以什么编码“接收”?
      

  7.   

    byte[] buff = Encoding.GetEncoding("GBK").GetBytes("緥");
    string strs=Encoding.Unicode.GetString(buff);
    如果收到的纯中文,这个代码转换后是正确的。如果带数字或字母,数字或字母转换不了