当前位置: 代码迷 >> VC >> 汉字 转换 ASCII,该怎么处理
  详细解决方案

汉字 转换 ASCII,该怎么处理

热度:3372   发布时间:2013-02-25 00:00:00.0
汉字 转换 ASCII
求: 将相应的字符串(包括数字、英文和汉字)转换为ASCII。
如:在asp中相关函数是ASC()。在vc.net中用什么???
asp代码:
<%
str
sub str
sout = Asc("乐")

Response.Write(sout)

End sub
%> 
输出结果为:-16170

在vc.net中:
 string s = "乐"
 char chars = s.ToCharArray()[0];
  return (int)chars;
输出结果为:20048
求在vc.net中找到到一个方法实现asp中的Asc()函数功能,要求与Asc输出完全一致。 不胜感谢!!!


------解决方案--------------------------------------------------------
不会写VC.NET的代码,下面这个是C#的,应该很容易改成VC.NET的代码:
C# code
string s = "乐";byte[] buf = System.Text.Encoding.Default.GetBytes(s);Array.Reverse(buf);Int16 i = System.BitConverter.ToInt16(buf, 0);
------解决方案--------------------------------------------------------
先搞清楚一个常识...汉字不可能转换为ASCII码,ASC函数也不是转换ASCII码,而是ANSI码...

1楼的代码就是获取本机ANSI码...因为汉字是多字节码,不可能用ASCII码表示...
------解决方案--------------------------------------------------------
byte[] array = new byte[2];
array =System.Text.Encoding.Default.GetBytes("");
int i1 = (short)(array[0]);
int i2 = (short)(array[1]);

Encoding.UTF8.GetBytes()
------解决方案--------------------------------------------------------
ASCII 是英文字符编码,不包括汉字。
常见的汉字编码有GBK编码, UNICODE编码, big5(台湾大五码), 简体GB2312, utf8编码等等。
同一个字的不同编码值是不一样的,字节数也可能不一样,utf8用三个字节表示一个汉字。

“乐”字的GB2312编码是0xC0D6(表示为十进制有符号数是-16170,十进制无符号数是49366)。
这个字的UNICODE编码0x4E50(十进制20048)

上面的方法得到的值都是对的,只是编码不同,或表现形式不一样。

要得到相同的值只需把字符编码设置成一样就行。

vc.net中可以在项目属性中设置字符编码,asp中不太清楚。

供参考 :)
  相关解决方案