PHP汉字转换为拼音字头原理

  GB 2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码。

  1)01-09区为特殊符号。

  2)16-55区为一级汉字,按拼音排序。

  3)56-87区为二级汉字,按部首/笔画排序。

  4)10-15区及88-94区则未有编码。

  在使用GB2312的程序中,通常采用EUC储存方法,以便兼容于ASCII。浏览器编码表上的“GB2312”,通常都是指“EUC-CN”表示法。

  每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”(也称“区字节)”,第二个字节称为“低位字节”(也称“位字节”)。

  “高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上 0xA0)。由于一级汉字从16区起始,汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,占用的码位是 72*94=6768。其中有5个空位是D7FA-D7FE。

  例如“啊”字在大多数程序中,会以两个字节,0xB0(第一个字节) 0xA1(第二个字节)储存。区位码=区字节+位字节(与区位码对比:0xB0=0xA0+16,0xA1=0xA0+1)。

  设计:

  用一个数组存放国标一级汉字不同读音的起始区位码 :如

  static final int[] secPosValueList = {

  1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212, 3472,

  3635, 3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249, 9999};

  一个数据存放存放国标一级汉字不同读音的起始区位码对应读音

  static final char[] firstLetter = {

  ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘, ‘h‘, ‘j‘, ‘k‘, ‘l‘, ‘m‘, ‘n‘, ‘o‘, ‘p‘,

  ‘q‘, ‘r‘, ‘s‘, ‘t‘, ‘w‘, ‘x‘, ‘y‘, ‘z‘};

  处理方法:

  1. 判断是否为英文之母

  2. 如果是,直接返回英文之母

  3. 取字符的编码值

  4. 比较判断其编码值在码表中的位置。

  5. 根据位置值,返回之母表中相应值

五月份投资者们做点什么【带鱼投资理财】:http://licai.daiyuline.com/caijingxinwen/335.html

5月开盘大吉 沪指上涨1.85%【证券投资】:http://licai.daiyuline.com/zhengquan/334.html

正收益基金继续减员【基金投资入门技巧】:http://licai.daiyuline.com/jijin/333.html

时间: 2024-10-06 17:20:21

PHP汉字转换为拼音字头原理的相关文章

C#编程入门--将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符

将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符 #region 将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符 /// <summary> /// 将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符 /// </summary> /// <param name="text"></param> /// <returns></returns> public static string G

iOS将汉字转换为拼音

将汉字转换为拼音 - (NSString *)chineseToPinyin:(NSString *)chinese withSpace:(BOOL)withSpace { CFStringRef hanzi = (__bridge CFStringRef)chinese; CFMutableStringRef string = CFStringCreateMutableCopy(NULL, 0, hanzi); CFStringTransform(string, NULL, kCFString

java汉字转换为拼音

原文:java汉字转换为拼音 代码下载地址:http://www.zuidaima.com/share/1550463275240448.htm 输入的字符串是:"这是一个中文" 运行结果: 标签: java 汉字 拼音 转化话题: 语言基础 脚本和工具

python:将汉字转换为拼音

找了两个库,都是基于键值的对拼音的简单查找,不支持多音字: https://github.com/cleverdeng/pinyin.py https://github.com/anjuke/pinyin4py 也可以自己写一个简单的转换器,上面的两个项目中都有汉字和拼音的对照表. http://www.oschina.net/code/snippet_862384_25415 中的代码中也有对招表. 多音字的识别,目测可以参考结巴分词的实现原理: https://github.com/fxsj

将汉字转换为拼音

private void txt_Chinese_TextChanged(object sender, EventArgs e) { txt_PinYIn.Text = //调用拼音类的GetABC方法得到拼音字符串 new PinYin().GetABC(txt_Chinese.Text); } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T

sql函数:汉字转换为拼音

sql数据库自定义一个函数把下面代码写进去 功能是得到汉字拼音首字母create function fun_getPY(@str nvarchar(4000)) returns nvarchar(4000) as begin declare @word nchar(1),@PY nvarchar(4000) set @PY='' while len(@str)>0 begin set @word=left(@str,1) --如果非汉字字符,返回原字符 set @[email protected

你知道PHP汉字是怎么转换为拼音字头吗?

GB 2312中对所收汉字进行了"分区"处理,每区含有94个汉字/符号.这种表示方式也称为区位码. 1)01-09区为特殊符号. 2)16-55区为一级汉字,按拼音排序. 3)56-87区为二级汉字,按部首/笔画排序. 4)10-15区及88-94区则未有编码. 在使用GB2312的程序中,通常采用EUC储存方法,以便兼容于ASCII.浏览器编码表上的"GB2312",通常都是指"EUC-CN"表示法.每个汉字及符号以两个字节来表示.第一个字节称

C#实现汉字转换为拼音缩写的代码

using System; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; public partial

swift把汉字转换为拼音,并且截取首字母做索引用

var transformContents = CFStringCreateMutableCopy(nil, 0, "咋啊的看到回复阿斯顿发货发哦iasdifas")CFStringTransform(transformContents, nil, kCFStringTransformMandarinLatin, 0)var traStr:String = transformContents as Stringlet index = advance(traStr.startIndex,