首页蓝耳朵|小小蓝耳朵广州图书馆外文室英语儿童读物资源介绍网佛教青年之友旧版收集永硕E盘Phonics Short Vowels Game 
汉字取拼音的问题——由“妞”取成“zuo”引起
所属栏目:ASP.NET(webform)  时间:2010-12-02 12:18  作者:狼子

input+select输入汉字或拼音快速选择数据第6步
http://www.nnllok.cn/Read.aspx?id=472

input+select输入汉字或拼音快速选择数据第2步(后附生成字符串拼音、取汉字首字母的方法)
http://www.nnllok.cn/Read.aspx?id=467

Character Sets
http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/SUPPDOCS/CHINADOC/CHINACH1.HTM

1.4   GB2312-80
http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/SUPPDOCS/CHINADOC/CHINACH1.HTM#ch1sect3

The GB2312-80 character set is a standard published by the State Bureau of Standardization of the People's Republic of China (PRC) in 1980 and put in force in May, 1981.

GB2312-80 defines 7,445 characters, including 6,763 Chinese characters in the following categories:

Graphic symbols
GB2312-80 defines 682 graphic symbols placed in rows 1-9.

Level 1 characters
GB2312-80 defines 3,755 frequently used characters placed in rows 16-55.

Level 2 characters
GB2312-80 defines 3,008 less frequently used characters placed in rows 56-87.

The GB2312-80 code table is divided into 94 rows (Qu), numbered from 1 to 94. Each row has 94 columns (Wei), also numbered from 1 to 94. Figure 1-5 illustrates the GD2312-80 character set.

Figure 1-5: GB2312-80 Character Set

《中华人民共和国国家标准信息交换用汉字编码》(GB 2312-80)

我国制定了“中华人民共和国国家标准信息交换汉字编码”,标准代号为GB2312—80,这种编码又称为国标码。在国标码的字符集中共收录了一级汉字3755个,二级汉字3008个,图形符号682个,三项字符总计7445个。

在国标GD2312—80中规定,所有的国标汉字及符号分配在一个94行、94列的方阵中,方阵的每一行称为一个“区”,编号为01区到94区,每一列称为一个“位”,编号为01位到94位,方阵中的每一个汉字和符号所在的区号和位号组合在一起形成的四个阿拉伯数字就是它们的“区位码”。区位码的前两位是它的区号,后两位是它的位号。用区位码就可以唯一地确定一个汉字或符号,反过来说,任何一个汉字或符号也都对应着一个唯一的区位码。汉字“母”字的区位码是3624,表明它在方阵的36区24位,问号“?”的区位码为0331,则它在03区3l位。

所有的汉字和符号所在的区分为以下四个组:
(1)01区到15区。图形符号区,其中01区到09区为标准符号区,10区到15区为自定义符号区。
  01区到09区的具体内容如下;
  1)01区。一般符号202个,如间隔符、标点、运算符、单位符号及制表符;
  2)02区。序号60个,如1.~20.、(1)~(20)、①~⑩及(一)~(十);
  3)03区。数字22个,如0—9及X一XII,英文字母52个,其中大写A—Z、小写a—z各26个;
  4)04区。日文平假名83个;
  5)05区。日文片假名86个;
  6)06区。希腊字母48个;
  7)07区。俄文字母66个;
  8)08区。汉语拼音符号a—z26个;
  9)09区。汉语拼音字母37个。

(2)16区到55区。一级常用汉字区,包括了3755个一统汉字。这40个区中的汉字是按汉语拼音排序的,同音字按笔划顺序排序。其中55区的90一94位未定义汉字。

(3)56区到87区。二级汉字区,包括了3008个二级汉字,按部首排序。

(4)88区到94区。自定义汉字区。

第10区到第15区的自定义符号区和第88区到第94区的自定义汉字区可由用户自行定义国标码中未定义的符号和汉字。

完整94区码表:http://ash.jp/code/cn/gb2312tbl.htm

基本集(不包括88-94区):http://lingua.mtsu.edu/chinese-computing/gb2312/hytable.txt

按拼音排序的第16-87区码表:http://www.fzrtvu.net/htm/qwm.htm(这个码表就是高考、自考一堆考里面用铅笔填的那个名字对应的四个数字)

从这个码表可以看出,区位码按拼音排序,是不连续的,根据上面对编码的解释,“妞”在70区,56-87区是二级汉字区,根据部首排序的,不是根据拼音排序的

在第6步里发现的问题,是因为在第2步记录的方法是完全按拼音连续排序的数组,这种方法只适用于16-55区的3755个常用汉字

解决方法。。。想ing...

如果想要把二级汉字区也弄进来,我要把每一个编码都用上?那和做一个汉字拼音表有什么区别呢?

先记录取编码的代码:

            //取双字符的两位字节
            byte[] codeBytes = Encoding.GetEncoding("GB2312").GetBytes(c.ToString());
            //区码:高字节 - 160
            int quCode = (int)codeBytes[0] - 160;
            //位码:低字节 - 160
            int weiCode = (int)codeBytes[1] - 160;
            //区位码:区码 * 100 + 位码
            Response.Write("区位码:" + Convert.ToString(quCode * 100 + weiCode));

 

小楼宝宝的涂鸦花花(Imitater)的博客起名称骨测字皖ICP备06000023号-17