http://bbs.csdn.net/topics/310075865
mysql 根据英文首字母来查询汉字函数 [推荐]

解决方案 »

  1.   

    借助其他程序语言实现 ,在输入汉字后保存到数据库前 ,将汉字对应的拼音值也保存到数据库表中 ,查询时直接使用即可 。
    JAVA实现类代码如下 :import net.sourceforge.pinyin4j.PinyinHelper;
    import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
    import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
    import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
    import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
    import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;public class GetPinYin {
    /**
     * 返回汉字的拼音
     * 
     * @param src
     * @return
     */
    public static String getPinYin(String src) {
    char[] t1 = null;
    t1 = src.toCharArray();
    String[] t2 = new String[t1.length];
    HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
    t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
    t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
    t3.setVCharType(HanyuPinyinVCharType.WITH_V);
    String t4 = "";
    int t0 = t1.length;
    try {
    for (int i = 0; i < t0; i++) {
    // 判断是否为汉字字符
    if (java.lang.Character.toString(t1[i]).matches(
    "[\\u4E00-\\u9FA5]+")) {
    t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);
    t2[0] = t2[0].substring(0, 1).toUpperCase()
    + t2[0].substring(1, t2[0].length());
    t4 += t2[0];
    } else {
    t4 += java.lang.Character.toString(t1[i]);
    }
    }
    return t4;
    } catch (BadHanyuPinyinOutputFormatCombination e1) {
    e1.printStackTrace();
    }
    return t4;
    } /**
     * 返回汉字拼音的首字母
     * 
     * @param str
     * @return
     */
    public static String getPinYinHeadChar(String str) {
    String convert = "";
    for (int j = 0; j < str.length(); j++) {
    char word = str.charAt(j);
    String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
    if (pinyinArray != null) {
    convert += pinyinArray[0].charAt(0);
    } else {
    convert += word;
    }
    }
    return convert;
    } //
    // public static String getCnASCII(String cnStr){
    // StringBuffer strBuf =  new   StringBuffer();
    // byte[] bGBK = cnStr.getBytes();
    // for(int i=0;i <bGBK.length;i++){
    // strBuf.append(Integer.toHexString(bGBK[i]&0xff));
    // }
    // return strBuf.toString();
    // } public static void main(String[] args) {
    System.out.println(getPinYin("陕西紫辰科技"));
    // 返回拼音的全拼样式
    System.out.println(getPinYinHeadChar("张旭"));
    // 返回拼音的首字母
    // System.out.println(getCnASCII("西安市"));
    // 返回拼音的ASCII
    }
    }jar 包 : pinyin4j-2.5.0.jar