文字转ASCII问题!回答就有分!高手进!给参考例子的话连昨天100分一起给 竖线的什么码是7E啊~高手给个例子~比如textbox里面输入"中"字~用Button的单击事件可以输出"中"字的码(因为不知道是什么码)这个码有7E 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 UTF-8完全和ASCII兼容,也就是说ASCII对应的字符在UTF-8中和ASCII编码完全一致。范围在0x00-0x7F之内的字符一定是ASCII字符,不可能是其他字符的一部分。 怎样判断一个汉字的是什么编码直接根据汉字的编码范围判断,对于GB2312和GBK可用下面两个程序实现。1、判断是否是GB2312bool isGBCode(const string& strIn){unsigned char ch1;unsigned char ch2;if (strIn.size() >= 2){ch1 = (unsigned char)strIn.at(0);ch2 = (unsigned char)strIn.at(1);if (ch1>=176 && ch1<=247 &&ch2>=160 && ch2<=254)return true;else return false;}else return false;}2、判断是否是GBK编码bool isGBKCode(const string& strIn){unsigned char ch1;unsigned char ch2;if (strIn.size() >= 2){ch1 = (unsigned char)strIn.at(0);ch2 = (unsigned char)strIn.at(1);if (ch1>=129 && ch1<=254 &&ch2>=64 && ch2<=254)return true;else return false;}else return false;}3、对于Big5它的范围为:高字节从0xA0到0xFE,低字节从0x40到0x7E,和0xA1到0xFE两部分。判断一个汉字是否是BIG5编码,可以如上对字符的编码范围判断即可。如何定位呢?那么也想象所有编码排列为一个二维坐标,纵坐标是高字节,横坐标是低字节。这样一行上的汉字个数:(0x7E-0x40+1)+(0xFE-0xA1+1)=157。那么定位算法分两块,为: if 0x40<=ch2<=0x7E: #is big5 char index=((ch1-0xA1)*157+(ch2-0x40))*2 elif 0xA1<=ch2<=0xFE: #is big5 char index=((ch1-0xA1)*157+(ch2-0xA1+63))*2 对于第二块,计算偏移量时因为有两块数值,所以在计算后面一段值时,不要忘了前面还有一段值。0x7E-0x40+1=63。四、如果判断一个字符是西文字符还是中文字符大家知道西文字符主要是指ASCII码,它用一个字节表示。且这个字符转换成数字之后,该数字是大于0的,而汉字是两个字节的,第一个字节的转化为数字之后应该是小于0的,因此可以根据每个字节转化为数字之后是否小于0,判断它是否是汉字。例如,设输入字为strin,则, If (strin.at(0) < 0) cout << ”是汉字” << endl; else cout << ”不是汉字” << endl; http://goto8848.net/2007/02/%E6%B1%89%E5%AD%97%E7%BC%96%E7%A0%81%E5%92%8C%E8%BE%93%E5%87%BA%E6%98%BE%E7%A4%BA%E5%8E%9F%E7%90%86/ 急急急急 先打开第一个窗体,然后打开它的子窗体,关闭子窗体后在第一个窗体上显示数据 急求Webservice发送的数据是如何封装的,非常感谢! 继承对象的疑问 c#主线程与子线程如何通信 请问C#的数组问题 datagrid(row+1,0)这是什么意思 确定活动的 MDI 子窗口 .NET ETAGS ===关于用C#实现在图片上定位的功能=== 关于数据库与treeview的问题(困扰好多天) 以前在.net 2005的工具菜单里有一项UML,现在怎么找不到了?
直接根据汉字的编码范围判断,对于GB2312和GBK可用下面两个程序实现。
1、判断是否是GB2312
bool isGBCode(const string& strIn)
{
unsigned char ch1;
unsigned char ch2;if (strIn.size() >= 2)
{
ch1 = (unsigned char)strIn.at(0);
ch2 = (unsigned char)strIn.at(1);
if (ch1>=176 && ch1<=247 &&ch2>=160 && ch2<=254)
return true;
else return false;
}
else return false;
}
2、判断是否是GBK编码
bool isGBKCode(const string& strIn)
{
unsigned char ch1;
unsigned char ch2;if (strIn.size() >= 2)
{
ch1 = (unsigned char)strIn.at(0);
ch2 = (unsigned char)strIn.at(1);
if (ch1>=129 && ch1<=254 &&ch2>=64 && ch2<=254)
return true;
else return false;
}
else return false;
}3、对于Big5
它的范围为:高字节从0xA0到0xFE,低字节从0x40到0x7E,和0xA1到0xFE两部分。判断一个汉字是否是BIG5编码,可以如上对字符的编码范围判断即可。如何定位呢?那么也想象所有编码排列为一个二维坐标,纵坐标是高字节,横坐标是低字节。这样一行上的汉字个数:(0x7E-0x40+1)+(0xFE-0xA1+1)=157。那么定位算法分两块,为: if 0x40<=ch2<=0x7E: #is big5 char
index=((ch1-0xA1)*157+(ch2-0x40))*2
elif 0xA1<=ch2<=0xFE: #is big5 char
index=((ch1-0xA1)*157+(ch2-0xA1+63))*2 对于第二块,计算偏移量时因为有两块数值,所以在计算后面一段值时,不要忘了前面还有一段值。0x7E-0x40+1=63。四、如果判断一个字符是西文字符还是中文字符
大家知道西文字符主要是指ASCII码,它用一个字节表示。且这个字符转换成数字之后,该数字是大于0的,而汉字是两个字节的,第一个字节的转化为数字之后应该是小于0的,因此可以根据每个字节转化为数字之后是否小于0,判断它是否是汉字。
例如,设输入字为strin,则,
If (strin.at(0) < 0)
cout << ”是汉字” << endl;
else cout << ”不是汉字” << endl;