Unicode转换汉字问题

badboy168 2005-11-24 02:33:50
在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",请大家帮忙解一下,为什不能得出正确的结果


...全文
833 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
badboy168 2005-11-25
  • 打赏
  • 举报
回复
是这样,可是为什么在控台应用程序中Console.WriteLine("\u590d")会得到“复呢”

谢谢 楼上的朋友,马上结帖
止戈而立 2005-11-24
  • 打赏
  • 举报
回复
为什么总是相反??
我这边:0d59才得到“复”。。
590d识别不到。。
可能高位跟低位的编码弄反了。。

ef53fd80d89a4d4fdf8d4e4f4d4f8476167f0178045fcd53864e
可 能 高 位 跟 低 位 的 编 码 弄 反 了

对照一下你的。。是不是这样?
badboy168 2005-11-24
  • 打赏
  • 举报
回复
实在是一个很奇怪的问题,在控制台应用程序下没有任何问题,把程序写到Windows应用程序中就会出现不能正常解码的现象,
在Windows应用程序中,我在textbox1中写\u590d,在程序内部跟踪时自支加上了一个@,在控制台应用程中就不会,真T.M.D怪了,靠
shilei831115 2005-11-24
  • 打赏
  • 举报
回复
啥时候把日文转换成中文不就好了吗?
当然,要用英文作为中间件,所以搂主就......
badboy168 2005-11-24
  • 打赏
  • 举报
回复
min_jie(止戈) 的方法只是对低字节和高字节分来进行16进制转换了,得到的结果为不是“复”字,是不是与平台有关呢,我用的操作系统是Win2003 EnterPrise Edition英文版,是正版,为什么会得到这个结果
givenchy 2005-11-24
  • 打赏
  • 举报
回复
既然是转汉字用 ASCII 干嘛。
止戈而立 2005-11-24
  • 打赏
  • 举报
回复
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
fanruinet 2005-11-24
  • 打赏
  • 举报
回复
你这样转换的确不对,应该是:
string str1 = "590d";
int unc = Convert.ToInt32(str1, 16);
Console.WriteLine((char)unc);
结果才是“复”

不过1的unicode吗应该是0031,不是3100
A也是0041
要是输入多于一个字符的Unicode码,还是四位四位的处理把
badboy168 2005-11-24
  • 打赏
  • 举报
回复
顶顶顶,有没有人帮解决一下问题呀
badboy168 2005-11-24
  • 打赏
  • 举报
回复
楼主的兄弟UP啥呀,就不能给点实用性建议,UP没分
wormwormwormworm 2005-11-24
  • 打赏
  • 举报
回复
up

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧