如何用C#取得汉字的内码? 我做了一个类,就是完成这个任务,我生成了一个xml文件,就是声母数据库. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 string str = "hello";char[] ch = str.ToCharArray(0,str.Length);foreach(char c in ch){ Console.WriteLine(Convert.ToString(c-0xa1));} 各位的意见都很好,但是内码和拼音之间有什么联系呢?我以前没有接触过这个方面的东西,那位说一下拉。给各一份范例最好email:[email protected] 能否也给我一份,呵呵,谢了。[email protected] 能否也给我一份,呵呵,谢了。[email protected] 我用了一个简单的办法:先是构造一个xml文件,当数据源使用,然后在这个数据源中查找:xml文件:HZPY.xml(节选) <z:row HZ="埃" SM="a" /> <z:row HZ="挨" SM="a" /> <z:row HZ="哎" SM="a" /> <z:row HZ="唉" SM="a" /> <z:row HZ="哀" SM="a" /> <z:row HZ="皑" SM="a" /> <z:row HZ="癌" SM="a" /> <z:row HZ="蔼" SM="a" /> <z:row HZ="矮" SM="a" /> ...... <z:row HZ="鼷" SM="X" /> <z:row HZ="鼽" SM="Q" /> <z:row HZ="鼾" SM="H" /> <z:row HZ="齄" SM="Z" /> <z:row HZ="扫" SM="s" /> 然后读到dataset中: ds=new DataSet(); FileStream ft=new FileStream "hzpy.xml",FileMode.Open,FileAccess.Read);ds.ReadXml(ft);ft.Close();这以后就容易了. 很简单啊!!!汉字都是双字节的,每个字节减去0xa1之后,得到的是区码和内码,其中,每区是94个汉字,一共多少个区,我忘记了。这是gb2312的结构,但是unicode的我不知道了。如果你做过dos下的显示汉字的程序(类似usdos的东西),就明白了。而在区码和位码与拼音的关系对照表,就很简单了。我以前做过,好像460多个拼音?(忘记了)比如:a 0101-0311 ai 0324-0455拼音a代表的汉子,在01区01位到03区11位。拼音ai代表的汉子,在03区24位到04区55位。这些对照关系,你自己做一下就知道了,很简单的。 GB2312 是分为一级汉字(16-55区,共 40*94个汉字)和二级汉字(56-87区,32*94个汉字)。其中一级汉字是常用字,按拼音排序,二级汉字是相对不那么常用的汉字,按部首排序。juqiang(鞠强) 的方法可以适用一级汉字,不能用于二级汉字。 呵呵,感谢microblue指点!!! datagridview表头逆向转 winForm,实现窗体半透明,控件不透明。请问怎样实现呢?多谢啦! Windows Media Player控件里怎么判断一首歌已经放完了 如何让INT类型变成4个字节的字符串?? 高手帮忙救急了,关于短信接收的一个小问题 winfrom窗体上有几个richTextBox控件,如何知道我选中的那一个? 寻书!三层结构的案例 c#实现今日联盟广告已展示次数动态显示功能 C#中删除问题 Gaugecontrol 数据绑定的问题 WIN API 使用手册(中文)下载!及CSC参数使用说明 新手求教!如何在C#的web应用程序中弹出一消息框?
char[] ch = str.ToCharArray(0,str.Length);
foreach(char c in ch){
Console.WriteLine(Convert.ToString(c-0xa1));
}
我以前没有接触过这个方面的东西,那位说一下拉。
给各一份范例最好email:[email protected]
xml文件:HZPY.xml(节选)
<z:row HZ="埃" SM="a" />
<z:row HZ="挨" SM="a" />
<z:row HZ="哎" SM="a" />
<z:row HZ="唉" SM="a" />
<z:row HZ="哀" SM="a" />
<z:row HZ="皑" SM="a" />
<z:row HZ="癌" SM="a" />
<z:row HZ="蔼" SM="a" />
<z:row HZ="矮" SM="a" />
......
<z:row HZ="鼷" SM="X" />
<z:row HZ="鼽" SM="Q" />
<z:row HZ="鼾" SM="H" />
<z:row HZ="齄" SM="Z" />
<z:row HZ="扫" SM="s" />
然后读到dataset中:
ds=new DataSet();
FileStream ft=new FileStream "hzpy.xml",FileMode.Open,FileAccess.Read);
ds.ReadXml(ft);
ft.Close();
这以后就容易了.
比如:a 0101-0311
ai 0324-0455拼音a代表的汉子,在01区01位到03区11位。
拼音ai代表的汉子,在03区24位到04区55位。这些对照关系,你自己做一下就知道了,很简单的。