方法一:

public static string GetCodstring(string UnName) { int i = 0; ushort key = 0; string strResult = string.Empty; //创建两个不同的encoding对象 Encoding unicode = Encoding.Unicode; //创建GBK码对象 Encoding gbk = Encoding.GetEncoding(936); //将unicode字符串转换为字节 byte[] unicodeBytes = unicode.GetBytes(UnName); //再转化为GBK码 byte[] gbkBytes = Encoding.Convert(unicode, gbk, unicodeBytes); while (i < gbkBytes.Length) { //如果为数字/字母/其他ASCII符号 if (gbkBytes[i] <= 127) { strResult = strResult + (char)gbkBytes[i]; i++; } #region 否则生成汉字拼音简码,取拼音首字母 else { key = (ushort)(gbkBytes[i] * 256 + gbkBytes[i + 1]); if (key >= '/uB0A1' && key <= '/uB0C4') { strResult = strResult + "A"; } else if (key >= '/uB0C5' && key <= '/uB2C0') { strResult = strResult + "B"; } else if (key >= '/uB2C1' && key <= '/uB4ED') { strResult = strResult + "C"; } else if (key >= '/uB4EE' && key <= '/uB6E9') { strResult = strResult + "D"; } else if (key >= '/uB6EA' && key <= '/uB7A1') { strResult = strResult + "E"; } else if (key >= '/uB7A2' && key <= '/uB8C0') { strResult = strResult + "F"; } else if (key >= '/uB8C1' && key <= '/uB9FD') { strResult = strResult + "G"; } else if (key >= '/uB9FE' && key <= '/uBBF6') { strResult = strResult + "H"; } else if (key >= '/uBBF7' && key <= '/uBFA5') { strResult = strResult + "J"; } else if (key >= '/uBFA6' && key <= '/uC0AB') { strResult = strResult + "K"; } else if (key >= '/uC0AC' && key <= '/uC2E7') { strResult = strResult + "L"; } else if (key >= '/uC2E8' && key <= '/uC4C2') { strResult = strResult + "M"; } else if (key >= '/uC4C3' && key <= '/uC5B5') { strResult = strResult + "N"; } else if (key >= '/uC5B6' && key <= '/uC5BD') { strResult = strResult + "O"; } else if (key >= '/uC5BE' && key <= '/uC6D9') { strResult = strResult + "P"; } else if (key >= '/uC6DA' && key <= '/uC8BA') { strResult = strResult + "Q"; } else if (key >= '/uC8BB' && key <= '/uC8F5') { strResult = strResult + "R"; } else if (key >= '/uC8F6' && key <= '/uCBF9') { strResult = strResult + "S"; } else if (key >= '/uCBFA' && key <= '/uCDD9') { strResult = strResult + "T"; } else if (key >= '/uCDDA' && key <= '/uCEF3') { strResult = strResult + "W"; } else if (key >= '/uCEF4' && key <= '/uD188') { strResult = strResult + "X"; } else if (key >= '/uD1B9' && key <= '/uD4D0') { strResult = strResult + "Y"; } else if (key >= '/uD4D1' && key <= '/uD7F9') { strResult = strResult + "Z"; } else { strResult = strResult + "?"; } i = i + 2; } #endregion }//end while return strResult; }

方法二:

// 国标码和区位码转换常量 static final int GB_SP_DIFF = 160; //存放国标一级汉字不同读音的起始区位码 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, 5600}; //存放国标一级汉字不同读音的起始区位码对应读音 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'}; //获取一个字符串的拼音码 public static String getFirstLetter(String oriStr) { String str = oriStr.toLowerCase(); StringBuffer buffer = new StringBuffer(); char ch; char[] temp; for (int i = 0; i < str.length(); i++) { //依次处理str中每个字符 ch = str.charAt(i); temp = new char[] {ch}; byte[] uniCode = new String(temp).getBytes(); if (uniCode[0] < 128 && uniCode[0] > 0) { // 非汉字 buffer.append(temp); } else { if(uniCode[0]==-93)//全角A的处理 buffer.append("a"); else if(uniCode[0]==-37)//"圳"的处理,非国标码一级汉字 buffer.append("z"); else if(uniCode[0]==-29)//"泸"的处理 buffer.append("l"); else if(uniCode[0]==-18)//"钛"的处理 buffer.append("t"); else buffer.append(convert(uniCode)); } } return buffer.toString(); } /** 获取一个汉字的拼音首字母。 * GB码两个字节分别减去160,转换成10进制码组合就可以得到区位码 * 例如汉字“你”的GB码是0xC4/0xE3,分别减去0xA0(160)就是0x24/0x43 * 0x24转成10进制就是36,0x43是67,那么它的区位码就是3667,在对照表中读音为‘n’ */ static char convert(byte[] bytes) { char result = '-'; int secPosValue = 0; int i; for (i = 0; i < bytes.length; i++) { bytes[i] -= GB_SP_DIFF; } secPosValue = bytes[0] * 100 + bytes[1]; for (i = 0; i < 23; i++) { if (secPosValue >= secPosValueList[i] && secPosValue < secPosValueList[i + 1]) { result = firstLetter[i]; break; } } return result; }

获取汉字的拼音简码方法(仅适用于国标一级汉字)相关推荐

  1. JavaBean实例9:获取汉字的拼音简码

    实现此功能的主要是通过Unicode字符集实现. 代码实现: 1.javaBean文件: StringUtil.java package exa137;public class StringUtil ...

  2. 取汉字的拼音简码.如果是其它字符,则原样返回(2010)

    以前用过很多中取汉子拼音的方法,一直有些字是取不出来的 没办法,只有从微软的拼音库把所有的字取出来了,应该没有取不出来的字了.... '-------------------------------- ...

  3. mysql 5.6.6_Mysql下Limit注入方法(此方法仅适用于5.0.0mysql5.6.6的版本)

    SQL语句类似下面这样:(此方法仅适用于5.0.0 SELECT field FROM table WHERE id > 0 ORDER BY id LIMIT (注入点) 问题的关键在于,语句 ...

  4. java 汉字转拼音工具_【转载】Java汉字转全拼工具

    个人在使用过程发现了几个问题需要注意: 1.本类使用了Pinyin4j开源库.点击下载 2.Pinyin4j本身是支持多音字的,但这胸弟貌似处理掉了,"长沙"会返回"zh ...

  5. java 汉字转换为拼音 简码 及全拼音

    只需要一个pinyin4j-2.5.0 目前新版本 下载地址:http://download.csdn.net/download/m0_37828590/9809067 import net.sour ...

  6. 汉字转拼音软件 1.3 中文免费版|给汉字自动加汉语拼音的软件

    http://www.mt30.com/Soft/safe/zhfy/201402/49894.html 汉字转拼音软件是一款拼音带声调.多音字识别率高.速度快的汉字转换拼音工具:该软件可以同时将简体 ...

  7. 集合4:方法-仅适用于set

    目录 1. s.update(*others) 2. s.intersection_update(*others) 3. s.difference_update(*others) 4. s.symme ...

  8. C#实现将汉字转换为拼音

    这篇文章仅微微涉及将汉字转换为拼音的实现方法,当然,能力有限,不能实现对声调的识别及显示! 页面设计 页面设计很简洁,一个输入框用来输入需要转换的文本,一个显示框用来展示转换后的文本. 代码实现部分 ...

  9. 汉字转拼音 - 输入汉字获取其拼音

    转载自: http://www.cnblogs.com/LonelyShadow/p/3543798.html 前不久看到有的朋友实现对商品名称拼音的录入,发现他的实现方式是手动输入的,-_-#.同志 ...

  10. Java/Android中汉字转拼音的两种方法,优劣比较

    一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...

最新文章

  1. 模板 - 一般图最大匹配(带花树)
  2. Linux新手生存笔记[2]——vim训练稿
  3. 【蓝桥杯Java_C组·从零开始卷】第八节、综合测试
  4. 查看虚拟机cpu型号_虚拟机管理器(Virtual Machine Manager)简介 | Linux 中国
  5. 医院(jzoj 1611)
  6. 为了金秋那沉甸甸的麦穗,我绝不辜负春天
  7. 408计算机网络考研试题,2021考研计算机(408)试题及解析——计算机网络
  8. 【新年假期宅家系列】动漫游戏集中营
  9. 王者荣耀成功的营销之战
  10. npm 模块安装机制简介
  11. Solution Explorer 和 Source Control Explorer 的 View History 异同
  12. 随手查_AD画板粗略步骤
  13. java adt eclipse_在eclipse中添加android ADT
  14. Windows + CUDA + Anaconda + TensorFlow + PyCharm
  15. 计算机通讯端口怎么增加,plc通讯接口如何添加删除方法
  16. 中国互联网络发展状况统计报告计算机,中国互联网络发展状况统计报告-计算机网络信息中心.DOC...
  17. Chromium 文件下载
  18. 如何更好地理解中间件和洋葱模型
  19. 6.5 特殊用途语言特性
  20. caspase3是什么意思_【求助】cleaved caspase-3, 第一个词怎样翻译好

热门文章

  1. cad查看_如何快速查看CAD文件?只需4步,文件即可轻松打开
  2. cad查看_微信接收图纸dwg怎么打开?如何手机查看CAD图纸,三步免费教你
  3. Linux下mysql数据恢复
  4. ROS--基于机器人操作系统设计与实现
  5. AUTOCAD——样条曲线命令
  6. matlab里转置det,matlab矩阵转置命令
  7. Java面向对象编程三大特征-多态
  8. Win 7扫雷时间基址查找
  9. 计算机房 噪声 标准,机房的噪音检测标准及治理方法
  10. Web渗透测试学习路线图