我做了一个类,就是完成这个任务,我生成了一个xml文件,就是声母数据库.

解决方案 »

  1.   

    string str = "hello";
    char[] ch = str.ToCharArray(0,str.Length);
    foreach(char c in ch){
    Console.WriteLine(Convert.ToString(c-0xa1));
    }
      

  2.   

    各位的意见都很好,但是内码和拼音之间有什么联系呢?
    我以前没有接触过这个方面的东西,那位说一下拉。
    给各一份范例最好email:[email protected]
      

  3.   

    能否也给我一份,呵呵,谢了。[email protected]
      

  4.   

    能否也给我一份,呵呵,谢了。[email protected]
      

  5.   

    我用了一个简单的办法:先是构造一个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();
    这以后就容易了.
      

  6.   

    很简单啊!!!汉字都是双字节的,每个字节减去0xa1之后,得到的是区码和内码,其中,每区是94个汉字,一共多少个区,我忘记了。这是gb2312的结构,但是unicode的我不知道了。如果你做过dos下的显示汉字的程序(类似usdos的东西),就明白了。而在区码和位码与拼音的关系对照表,就很简单了。我以前做过,好像460多个拼音?(忘记了)
    比如:a 0101-0311 
          ai 0324-0455拼音a代表的汉子,在01区01位到03区11位。
    拼音ai代表的汉子,在03区24位到04区55位。这些对照关系,你自己做一下就知道了,很简单的。
      

  7.   

    GB2312 是分为一级汉字(16-55区,共 40*94个汉字)和二级汉字(56-87区,32*94个汉字)。其中一级汉字是常用字,按拼音排序,二级汉字是相对不那么常用的汉字,按部首排序。juqiang(鞠强) 的方法可以适用一级汉字,不能用于二级汉字。
      

  8.   

    呵呵,感谢microblue指点!!!