在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",请大家帮忙解一下,为什不能得出正确的结果
在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",请大家帮忙解一下,为什不能得出正确的结果
解决方案 »
- 导出一个时间段统计表
- .net中如何实现Byte数组和结构体的转化(Windows mobile)
- C# 中如何把查询出来的数据导出到Excel里
- 怎样设置splitcontainer中splitter的颜色
- 微软.NET软件工程师实战培训 好不好》
- 正则高手请进----如何用正则匹配txt文档中的内容,并读取出匹配的内容~~~
- 关于正则表达式,如何用正则表达式实现这种功能.(这个贴只讨论正则表达式)
- C++中的struct在C#中如何写?比较特殊
- CTRL+V被屏蔽了,求个粘贴文本的方法?
- 这里人气旺,谁来硪我看一下这个数据库的问题,清版主保留,谢谢
- 如果确定某一个点是否在指定的圆内?
- C#中如何获取一台计算机的机器码?
string str1 = "590d";
int unc = Convert.ToInt32(str1, 16);
Console.WriteLine((char)unc);
结果才是“复”不过1的unicode吗应该是0031,不是3100
A也是0041
要是输入多于一个字符的Unicode码,还是四位四位的处理把
{
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
在Windows应用程序中,我在textbox1中写\u590d,在程序内部跟踪时自支加上了一个@,在控制台应用程中就不会,真T.M.D怪了,靠
我这边:0d59才得到“复”。。
590d识别不到。。
可能高位跟低位的编码弄反了。。ef53fd80d89a4d4fdf8d4e4f4d4f8476167f0178045fcd53864e
可 能 高 位 跟 低 位 的 编 码 弄 反 了对照一下你的。。是不是这样?