zoukankan      html  css  js  c++  java
  • GB2312简体中文转换为拼音的一种方法

      GBK是GB18030的子集(GB18030暂不追溯)。

      GBK编码标准共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。

      GB2312简体中文编码表:http://tools.jb51.net/table/gb2312

      GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB 2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。整个字符集分成94个区,每区有94个位。

    • GB2312,又称为GB0,由中国国家标准总局发布,1981年5月1日实施
    • GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个
    • GB2312是一种区位码。分为94个区(01-94),每区94个字符(01-94)
    • 01-09区为特殊符号
    • 10-15区没有编码
    • 16-55区为一级汉字,按拼音排序,共3755个
    • 56-87区为二级汉字,按部首/笔画排序,共3008个
    • 88-94区没有编码
    • GB2312只是编码表,在计算机中通常都是用"EUC-CN"表示法,即在每个区位加上0xA0来表示。区和位分别占用一个字节。

      GB2312是GBK的子集。GB2312是中国国家标准的简体中文字符集。它所收录的汉字已经覆盖99.75%的使用频率,基本满足了汉字的计算机处理需要。GB2312编码包括符号、数字、字母、日文、制表符等,当然最主要的部分还是中文,它采用16位编码方式,简体中文的编码范围从B0A1一直到F7FE。如果我们把该编码的每8位用十进制来表示就是[176 | 161]到[247 | 254],这样对于每个中文字符,我们都可以通过两个值来表示它,如“啊”就是[176 | 161],“我”则是[206 | 210]。

      通过上面的方法,我们就可以通过一个二维坐标对每一个中文字进行定位,从而建立一个二维表来实现中文和拼音的对应关系。当然我们会忽略一些特殊情况,比如汉字的多音字问题。由于一个拼音可能对应多个汉字,而拼音的组合本来就不多,因此我们首先建立一个拼音音节表,代码如下,里面列出了所有可能的组合情况,该表是一维数组。

      在上面提到的二维表中,我们会保存音节表的索引值,来对应一个音节组合,如bao,而不是直接把音节组合保存在二维数组中,这样可以有效减少内存消耗。因此,二位数组中的所有值都应该是索引值,如数组元素[176][161]对应的应该是a的索引值0。

      以C#语言简例:

      首先输入汉字“我”,首先程序初始化一个GB2312编码对象

      System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("GB2312");

    然后通过该对象获得“我”的编码数组

      byte[] local = encoding.GetBytes(“我”);

    local中的值应该是local[0]=206; local[1]=210。转换为十六进制,在CED2坐标位置可以找到“我”字。再查音节组合表,得索引值(可以根据具体需要修正索引)对应的是"wo",这样就完成了简体中文到拼音的转换。

      由此可以想到多音字、或者GBK的转换会是怎样处理呢?有机会以后分解(当然方法不止一种)。

  • 相关阅读:
    sql脚本:将一个数据库完整复制到另一个数据库(转)
    问题:DropDownList启用AutoPostback后,SelectedIndexChanged事件跟踪不到
    学习:如何在已有MOSS的环境下重装IIS(转)
    学习:MOSS2007 实现单点登陆(转)
    sql脚本:恢复数据库(根据备份的bak)(转)
    学习:深入浅出之正则表达式(转)
    错误:此网页的安全性验证无效并且可能损坏。请单击 Web 浏览器中的“后退”,刷新网页,再重试操作
    学习:关于代码调用SSP获取UserProfile出错的解决方案(转)
    问题:提升权限后,更新SPListItem即 Item.Update()出错问题
    学习:char、varchar、text和nchar、nvarchar、ntext的区别(转)
  • 原文地址:https://www.cnblogs.com/zhaojihui/p/6624767.html
Copyright © 2011-2022 走看看