ImageVerifierCode 换一换
格式:DOCX , 页数:104 ,大小:138.29KB ,
资源ID:7570667      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7570667.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android汉字转拼音的方案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android汉字转拼音的方案.docx

1、Android汉字转拼音的方案A* Inc. ConfidentialAndroid汉字转拼音的方案变更说明序号版本变更原因变更内容变更人变更日期备注1V0.1初稿初稿叶蕾08/14/201723456789101112131415161718媒体文件扫描方案1 前言该文档为开发人员阅读。1.1 文档目的文档编写目的:为项目参与者阅读。2 开发环境和方案说明说明如下:1) Android系统:Android KK以上版本。2) 开发环境:JDK 1.6以上版本,NDK开发环境。3) 开发工具:Eclipse,Android Develop tools2.1 汉字编码说明当前汉字的编码主要有下面

2、几种: UTF-8编码:例如从Linux环境中编辑的文本文件,大部分是UTF-8编码。会占用三个字节。 GBK,GB2312等汉字编码:该类编码在中文编码中,用的比较多,一般默认是GBK编码。从通用性来考虑,一般只考虑GBK编码和UTF-8编码。2.2 对比pinyin4j开源库方案谈到汉字转拼音,很多人都想直接用pinyin4j来实现。但是pinyin4j存在如下缺点:1. 只能处理GBK的编码的汉字,无法处理UTF-8的汉字。2. 其效率较为低下,比较耗时。2.3 此方案核心思路和设计特点核心的思路和设计特点如下:1) 针对GBK编码,采用Java层的一维数组的变量进行拼音的转码。改一维数

3、组能够从网络上获取,能够对应各个汉字的评语。2) 针对UTF-8编码,通过JNI C实现,UTF-8编码需要对应一个大小为20902的数组,遍历起来比较耗时,所以使用C语言实现效率较高。3 核心代码3.1 PingYingTool文件3.1.1 包引用和变量说明package haoke.lyb.mediaScanner;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.Set;import com.file.server.debug.DebugLog;import com.file.server

4、.scan.ScanJni;public class PingYingTool private static boolean PINYIN_DEBUG = true;3.1.2 针对一个字符串获得汉字拼音 public static String parseString(String str) if (str = null) return null; StringBuffer retStr = new StringBuffer(); String firstStr = getFirstSpell(str); if (firstStr.equals(str) retStr.append(Scan

5、Jni.getPY(str); else retStr.append(firstStr); if (PINYIN_DEBUG) retStr.append(;); retStr.append(getFullSpell(str); return retStr.toString(); 3.1.3 获得单个汉字的Ascii /* * 获得单个汉字的Ascii. * param cn char 汉字字符 * return int 错误返回 0,否则返回ascii */ private static int getCnAscii(char cn) byte bytes = (String.valueOf

6、(cn).getBytes(); if (bytes = null | bytes.length 2 | bytes.length 0&160,如果是返回对应的字符, * 否则到SpellMap中查找,如果没有找到拼音,则返回null,如果找到则返回拼音. */ public static String getSpellByAscii(int ascii) if (ascii 0 & ascii 160) /单字符 return String.valueOf( (char) ascii); if (ascii -10247) /不知道的字符 return null; Set keySet =

7、spellMap.keySet(); Iterator it = keySet.iterator(); String spell0 = null; String spell = null; int asciiRang0 = -20319; int asciiRang; while (it.hasNext() spell = (String) it.next(); Object valObj = spellMap.get(spell); if (valObj instanceof Integer) asciiRang = ( (Integer) valObj).intValue(); if (a

8、scii = asciiRang0 & ascii asciiRang) /区间找到 return (spell0 = null) ? spell : spell0; else spell0 = spell; asciiRang0 = asciiRang; return null; 3.1.5 汉字转化为全拼 /* * 返回字符串的全拼,是汉字转化为全拼,其它字符不进行转换 * param cnStr String * 字符串 * return String * 转换成全拼后的字符串 */ public static String getFullSpell(String cnStr) if (

9、null = cnStr | .equals(cnStr.trim() return cnStr; char chars = cnStr.toCharArray(); StringBuffer retuBuf = new StringBuffer(); for (int i = 0, Len = chars.length; i Len; i+) int ascii = getCnAscii(charsi); if (ascii = 0) /取ascii时出错 retuBuf.append(charsi); else String spell = getSpellByAscii(ascii);

10、if (spell = null) retuBuf.append(charsi); else retuBuf.append(spell); / end of if spell = null / end of if ascii = -20400 / end of for return retuBuf.toString(); 3.1.6 获得一个汉字的首拼 /* * 第一个字取全拼,后面的字取首字母 * param cnStr * return 返回转换后的拼 */ public static String getFirstSpell(String cnStr) if (null = cnStr

11、| .equals(cnStr.trim() return cnStr; char chars = cnStr.toCharArray(); StringBuffer retuBuf = new StringBuffer(); for (int i = 0, Len = chars.length; i Len; i+) int ascii = getCnAscii(charsi); if (ascii = 0) /取ascii时出错 retuBuf.append(charsi); else String spell = getSpellByAscii(ascii); if (spell = n

12、ull) retuBuf.append(charsi); else retuBuf.append(spell.substring(0, 1); / end of for return retuBuf.toString(); 3.1.7 存储的汉字拼音对应的数组 private static LinkedHashMap spellMap = null; static if (spellMap = null) spellMap = new LinkedHashMap(500); initialize(); private static void spellPut(String spell, int

13、 ascii) spellMap.put(spell, new Integer(ascii); private static void initialize() spellPut(a, -20319); spellPut(ai, -20317); spellPut(an, -20304); spellPut(ang, -20295); spellPut(ao, -20292); spellPut(ba, -20283); spellPut(bai, -20265); spellPut(ban, -20257); spellPut(bang, -20242); spellPut(bao, -20

14、230); spellPut(bei, -20051); spellPut(ben, -20036); spellPut(beng, -20032); spellPut(bi, -20026); spellPut(bian, -20002); spellPut(biao, -19990); spellPut(bie, -19986); spellPut(bin, -19982); spellPut(bing, -19976); spellPut(bo, -19805); spellPut(bu, -19784); spellPut(ca, -19775); spellPut(cai, -197

15、74); spellPut(can, -19763); spellPut(cang, -19756); spellPut(cao, -19751); spellPut(ce, -19746); spellPut(ceng, -19741); spellPut(cha, -19739); spellPut(chai, -19728); spellPut(chan, -19725); spellPut(chang, -19715); spellPut(chao, -19540); spellPut(che, -19531); spellPut(chen, -19525); spellPut(che

16、ng, -19515); spellPut(chi, -19500); spellPut(chong, -19484); spellPut(chou, -19479); spellPut(chu, -19467); spellPut(chuai, -19289); spellPut(chuan, -19288); spellPut(chuang, -19281); spellPut(chui, -19275); spellPut(chun, -19270); spellPut(chuo, -19263); spellPut(ci, -19261); spellPut(cong, -19249)

17、; spellPut(cou, -19243); spellPut(cu, -19242); spellPut(cuan, -19238); spellPut(cui, -19235); spellPut(cun, -19227); spellPut(cuo, -19224); spellPut(da, -19218); spellPut(dai, -19212); spellPut(dan, -19038); spellPut(dang, -19023); spellPut(dao, -19018); spellPut(de, -19006); spellPut(deng, -19003);

18、 spellPut(di, -18996); spellPut(dian, -18977); spellPut(diao, -18961); spellPut(die, -18952); spellPut(ding, -18783); spellPut(diu, -18774); spellPut(dong, -18773); spellPut(dou, -18763); spellPut(du, -18756); spellPut(duan, -18741); spellPut(dui, -18735); spellPut(dun, -18731); spellPut(duo, -18722

19、); spellPut(e, -18710); spellPut(en, -18697); spellPut(er, -18696); spellPut(fa, -18526); spellPut(fan, -18518); spellPut(fang, -18501); spellPut(fei, -18490); spellPut(fen, -18478); spellPut(feng, -18463); spellPut(fo, -18448); spellPut(fou, -18447); spellPut(fu, -18446); spellPut(ga, -18239); spel

20、lPut(gai, -18237); spellPut(gan, -18231); spellPut(gang, -18220); spellPut(gao, -18211); spellPut(ge, -18201); spellPut(gei, -18184); spellPut(gen, -18183); spellPut(geng, -18181); spellPut(gong, -18012); spellPut(gou, -17997); spellPut(gu, -17988); spellPut(gua, -17970); spellPut(guai, -17964); spe

21、llPut(guan, -17961); spellPut(guang, -17950); spellPut(gui, -17947); spellPut(gun, -17931); spellPut(guo, -17928); spellPut(ha, -17922); spellPut(hai, -17759); spellPut(han, -17752); spellPut(hang, -17733); spellPut(hao, -17730); spellPut(he, -17721); spellPut(hei, -17703); spellPut(hen, -17701); sp

22、ellPut(heng, -17697); spellPut(hong, -17692); spellPut(hou, -17683); spellPut(hu, -17676); spellPut(hua, -17496); spellPut(huai, -17487); spellPut(huan, -17482); spellPut(huang, -17468); spellPut(hui, -17454); spellPut(hun, -17433); spellPut(huo, -17427); spellPut(ji, -17417); spellPut(jia, -17202);

23、 spellPut(jian, -17185); spellPut(jiang, -16983); spellPut(jiao, -16970); spellPut(jie, -16942); spellPut(jin, -16915); spellPut(jing, -16733); spellPut(jiong, -16708); spellPut(jiu, -16706); spellPut(ju, -16689); spellPut(juan, -16664); spellPut(jue, -16657); spellPut(jun, -16647); spellPut(ka, -16

24、474); spellPut(kai, -16470); spellPut(kan, -16465); spellPut(kang, -16459); spellPut(kao, -16452); spellPut(ke, -16448); spellPut(ken, -16433); spellPut(keng, -16429); spellPut(kong, -16427); spellPut(kou, -16423); spellPut(ku, -16419); spellPut(kua, -16412); spellPut(kuai, -16407); spellPut(kuan, -

25、16403); spellPut(kuang, -16401); spellPut(kui, -16393); spellPut(kun, -16220); spellPut(kuo, -16216); spellPut(la, -16212); spellPut(lai, -16205); spellPut(lan, -16202); spellPut(lang, -16187); spellPut(lao, -16180); spellPut(le, -16171); spellPut(lei, -16169); spellPut(leng, -16158); spellPut(li, -16155); spellPut(lia, -15959); spellPut(lian, -15958); spellPut(liang, -15944); spellPut(liao, -15933); spellPut(lie, -15920); spellPut(lin, -15915); spe

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1