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 androidpinyin4j汉字转拼音

解决方案 »

  1.   

    找到问题了,是因为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包执行时,都无法读取文件。。求指教啊