当前位置:编程学习 > wap >>

android平台 pinyin4j 汉字转换中文问题

android 原生汉字转拼音用的是HanziToPinyin.java ,但是有些中文字符会转换错误,所以我将HanziToPinyin.java修改了下,改用pinyin4j进行转码,但是碰到一个很奇怪的问题


private static HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
static {  
    outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
    outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
    outputFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); 
}  

public static String hanYuPinYin(String key) {
    String ss = "";
    try{
        ss = PinyinHelper.toHanyuPinyinString(key, outputFormat, "");
    }catch(Exception e){
        Log.w("HanziToPinyin","[hanYuPinYin]pinyin convert key:" + key + " failed !");
    }
    Log.d("HanziToPinyin","key:"+key+",ss:"+ss);
    return String.valueOf(ss.trim());
}


以上是我的代码,单独在java工程里使用上段代码,转换是正常的,输入"呵"输出 "HE"

但是我将上述代码移植到 contactsprovider 包下 HanziToPinyin.java中时,当我插入一个名字为"呵呵"的联系人,转换后仍是中文,有人在android碰到这个奇怪的问题不

以下是android的log截图
androidpingyin4j  android pinyin4j 汉字转拼音 --------------------编程问答-------------------- 找到问题了,是因为ChineseToPinyinResource.java这个文件初始化读取 文件时失败

    private void initializeResource()
    {
        try
        {
            final String resourceName = "/pinyindb/unicode_to_hanyu_pinyin.txt";

            setUnicodeToHanyuPinyinTable(new Properties());
            getUnicodeToHanyuPinyinTable().load(ResourceHelper.getResourceInputStream(resourceName));

        } catch (FileNotFoundException ex)
        {
            ex.printStackTrace();
        } catch (IOException ex)
        {
            ex.printStackTrace();
        }
    }


那这个jar包我还怎么用,都没法读取jar包执行时,都无法读取文件。。求指教啊
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,