积极答复者
一个判断GB2312中有效种文字困惑.

问题
-
[TestMethod()] //这个函数总是测试通不过.第一个'啊'就不行.郁闷 public void Test_IsZhongWenZiInGB23121() { string str = "啊齄②ぽφ┣"; Assert.IsTrue(IsZhongWenZiInGB2312(str[0])); Assert.IsFalse(IsZhongWenZiInGB2312(str[1])); Assert.IsFalse(IsZhongWenZiInGB2312(str[2])); }//Test_IsZhongWenZiInGB23121() ========================== /// <summary> /// 判断某一个编码是否是GB2312中的中文字。 /// </summary> /// <param name="_Zi"></param> /// <returns></returns> public static bool IsZhongWenZiInGB2312( UInt16 _Zi ) { UInt16 HighByte =Convert.ToUInt16( (_Zi & Convert.ToUInt16(0xFF00)) >> 8);//高位字节 UInt16 LowByte = Convert.ToUInt16(0x00FF); if ( HighByte>=176 && HighByte<=247 && LowByte>=160 && LowByte<=254) return true; else return false; }//IsZhongWenZiInGB2312( UInt16 _Zi )
信奎爷,无所畏惧!!
答案
-
你好:)
更为简单的方法:
public static bool IsZhongWenZiInGB2312(string word)
{
byte[]bytes = Encoding.GetEncoding("gb2312").GetBytes(word);
byte highbyte = bytes[0];
byte lowbyte=bytes[1];
if (highbyte >= 176 && highbyte <= 247
&& lowbyte >= 160 && lowbyte <= 254)
return true;
else
return false;}
static void Main(string[] Args)
{string str = "啊齄②ぽφ┣";
Console.WriteLine(IsZhongWenZiInGB2312(str[0]+""));
}
如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处- 已标记为答案 Charles Shao 2011年5月18日 1:52
-
太感谢了! 原来还可以这么方便地直接获取高低位字节呀...呵呵
另外我在调试的时候发现, GB2312通过C#读取得值与编码表中的理论值不符. 不知道是怎么回事.
您能再帮我看看吗? 谢谢. 我开了一个新问题: http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/a762a16c-f3eb-491d-a2fd-75cc5fdfc19a
信奎爷,无所畏惧!!- 已标记为答案 Charles Shao 2011年5月18日 1:52
全部回复
-
你好:)
更为简单的方法:
public static bool IsZhongWenZiInGB2312(string word)
{
byte[]bytes = Encoding.GetEncoding("gb2312").GetBytes(word);
byte highbyte = bytes[0];
byte lowbyte=bytes[1];
if (highbyte >= 176 && highbyte <= 247
&& lowbyte >= 160 && lowbyte <= 254)
return true;
else
return false;}
static void Main(string[] Args)
{string str = "啊齄②ぽφ┣";
Console.WriteLine(IsZhongWenZiInGB2312(str[0]+""));
}
如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处- 已标记为答案 Charles Shao 2011年5月18日 1:52
-
太感谢了! 原来还可以这么方便地直接获取高低位字节呀...呵呵
另外我在调试的时候发现, GB2312通过C#读取得值与编码表中的理论值不符. 不知道是怎么回事.
您能再帮我看看吗? 谢谢. 我开了一个新问题: http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/a762a16c-f3eb-491d-a2fd-75cc5fdfc19a
信奎爷,无所畏惧!!- 已标记为答案 Charles Shao 2011年5月18日 1:52