在Windows应用程序中
在textBox1中输入"590d"(不包含引号),执行下面的代码
Encoding unicode=Encoding.Unicode;
Encoding ascii=Encoding.ASCII;
byte[] codeBytes=unicode.GetBytes(this.textBox1.Text);
byte[] codes=Encoding.Convert(unicode,ascii,codeBytes);
this.textBox2.Text=unicode.GetString(codes);textBox2的结果为“  㤵搰”,而正结果应为"复",输入"3100410"时textBox2为"ㄳ〰ㄴ〰",正确结果应该是"1A",请大家帮忙解一下,为什不能得出正确的结果

解决方案 »

  1.   

    楼主的兄弟UP啥呀,就不能给点实用性建议,UP没分
      

  2.   

    你这样转换的确不对,应该是:
    string str1 = "590d";
    int unc = Convert.ToInt32(str1, 16);
    Console.WriteLine((char)unc);
    结果才是“复”不过1的unicode吗应该是0031,不是3100
    A也是0041
    要是输入多于一个字符的Unicode码,还是四位四位的处理把
      

  3.   

    public string CodingToCharacter(string coding)
    {
    string characters = "";
    if (coding.Length % 4 != 0)//编码为16进制,必须为4的倍数。
    {
    throw new System.Exception("编码格式不正确");
    }
    for (int i = 0; i<coding.Length; i+=4 ) //每四位为一个汉字
    {
    byte[] bytes = new byte[2];
    string lowCode = coding.Substring(i, 2); //取出低字节,并以16进制进制转换
    bytes[0] = System.Convert.ToByte(lowCode, 16);
    string highCode = coding.Substring(i + 2, 2); //取出高字节,并以16进制进行转换
    bytes[1] = System.Convert.ToByte(highCode, 16);
    string character = System.Text.Encoding.Unicode.GetString(bytes);
    characters += character;
    }
    return characters;
    }经测试:输入31004100    输出:1A
      

  4.   

    既然是转汉字用 ASCII 干嘛。
      

  5.   

    min_jie(止戈) 的方法只是对低字节和高字节分来进行16进制转换了,得到的结果为不是“复”字,是不是与平台有关呢,我用的操作系统是Win2003 EnterPrise Edition英文版,是正版,为什么会得到这个结果
      

  6.   

    实在是一个很奇怪的问题,在控制台应用程序下没有任何问题,把程序写到Windows应用程序中就会出现不能正常解码的现象,
    在Windows应用程序中,我在textbox1中写\u590d,在程序内部跟踪时自支加上了一个@,在控制台应用程中就不会,真T.M.D怪了,靠
      

  7.   

    为什么总是相反??
    我这边:0d59才得到“复”。。
    590d识别不到。。
    可能高位跟低位的编码弄反了。。ef53fd80d89a4d4fdf8d4e4f4d4f8476167f0178045fcd53864e
    可  能  高  位  跟  低  位  的  编  码  弄  反  了对照一下你的。。是不是这样?
      

  8.   

    是这样,可是为什么在控台应用程序中Console.WriteLine("\u590d")会得到“复呢”谢谢 楼上的朋友,马上结帖