xsl2007 发表于 2013-2-5 09:41:57

java程序将汉字转成拼音的两种方法

1.使用pinyin4j将汉字转成拼音,附件为pinyin4j的jar包
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 ChineseToEnglish {// 将汉字转换为全拼public static String getPingYin(String src) {char[] t1 = null;t1 = src.toCharArray();String[] t2 = new String;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).matches("[\\u4E00-\\u9FA5]+")) {t2 = PinyinHelper.toHanyuPinyinStringArray(t1, t3);t4 += t2;} elset4 += java.lang.Character.toString(t1);}// System.out.println(t4);return t4;} catch (BadHanyuPinyinOutputFormatCombination e1) {e1.printStackTrace();}return t4;}// 返回中文的首字母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.charAt(0);} else {convert += word;}}return convert;}// 将字符串转移为ASCII码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 & 0xff));}return strBuf.toString();}public static void main(String[] args) {System.out.println(getPingYin("綦江qq县"));System.out.println(getPinYinHeadChar("綦江县"));System.out.println(getCnASCII("綦江县"));}}

2.java程序直接转
import java.util.Iterator;import java.util.LinkedHashMap;import java.util.Set;public class ChineseToEnglish2 {    private static LinkedHashMap spellMap = null;    static {      if (spellMap == null) {            spellMap = new LinkedHashMap(500);      }      initialize();    }    private ChineseToEnglish2() {    }    private static void spellPut(String spell, int 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", -20230);      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", -19774);      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("cheng", -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);      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);      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);      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);      spellPut("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);      spellPut("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);      spellPut("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);      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", -16474);      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", -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);      spellPut("ling", -15903);      spellPut("liu", -15889);      spellPut("long", -15878);      spellPut("lou", -15707);      spellPut("lu", -15701);      spellPut("lv", -15681);      spellPut("luan", -15667);      spellPut("lue", -15661);      spellPut("lun", -15659);      spellPut("luo", -15652);      spellPut("ma", -15640);      spellPut("mai", -15631);      spellPut("man", -15625);      spellPut("mang", -15454);      spellPut("mao", -15448);      spellPut("me", -15436);      spellPut("mei", -15435);      spellPut("men", -15419);      spellPut("meng", -15416);      spellPut("mi", -15408);      spellPut("mian", -15394);      spellPut("miao", -15385);      spellPut("mie", -15377);      spellPut("min", -15375);      spellPut("ming", -15369);      spellPut("miu", -15363);      spellPut("mo", -15362);      spellPut("mou", -15183);      spellPut("mu", -15180);      spellPut("na", -15165);      spellPut("nai", -15158);      spellPut("nan", -15153);      spellPut("nang", -15150);      spellPut("nao", -15149);      spellPut("ne", -15144);      spellPut("nei", -15143);      spellPut("nen", -15141);      spellPut("neng", -15140);      spellPut("ni", -15139);      spellPut("nian", -15128);      spellPut("niang", -15121);      spellPut("niao", -15119);      spellPut("nie", -15117);      spellPut("nin", -15110);      spellPut("ning", -15109);      spellPut("niu", -14941);      spellPut("nong", -14937);      spellPut("nu", -14933);      spellPut("nv", -14930);      spellPut("nuan", -14929);      spellPut("nue", -14928);      spellPut("nuo", -14926);      spellPut("o", -14922);      spellPut("ou", -14921);      spellPut("pa", -14914);      spellPut("pai", -14908);      spellPut("pan", -14902);      spellPut("pang", -14894);      spellPut("pao", -14889);      spellPut("pei", -14882);      spellPut("pen", -14873);      spellPut("peng", -14871);      spellPut("pi", -14857);      spellPut("pian", -14678);      spellPut("piao", -14674);      spellPut("pie", -14670);      spellPut("pin", -14668);      spellPut("ping", -14663);      spellPut("po", -14654);      spellPut("pu", -14645);      spellPut("qi", -14630);      spellPut("qia", -14594);      spellPut("qian", -14429);      spellPut("qiang", -14407);      spellPut("qiao", -14399);      spellPut("qie", -14384);      spellPut("qin", -14379);      spellPut("qing", -14368);      spellPut("qiong", -14355);      spellPut("qiu", -14353);      spellPut("qu", -14345);      spellPut("quan", -14170);      spellPut("que", -14159);      spellPut("qun", -14151);      spellPut("ran", -14149);      spellPut("rang", -14145);      spellPut("rao", -14140);      spellPut("re", -14137);      spellPut("ren", -14135);      spellPut("reng", -14125);      spellPut("ri", -14123);      spellPut("rong", -14122);      spellPut("rou", -14112);      spellPut("ru", -14109);      spellPut("ruan", -14099);      spellPut("rui", -14097);      spellPut("run", -14094);      spellPut("ruo", -14092);      spellPut("sa", -14090);      spellPut("sai", -14087);      spellPut("san", -14083);      spellPut("sang", -13917);      spellPut("sao", -13914);      spellPut("se", -13910);      spellPut("sen", -13907);      spellPut("seng", -13906);      spellPut("sha", -13905);      spellPut("shai", -13896);      spellPut("shan", -13894);      spellPut("shang", -13878);      spellPut("shao", -13870);      spellPut("she", -13859);      spellPut("shen", -13847);      spellPut("sheng", -13831);      spellPut("shi", -13658);      spellPut("shou", -13611);      spellPut("shu", -13601);      spellPut("shua", -13406);      spellPut("shuai", -13404);      spellPut("shuan", -13400);      spellPut("shuang", -13398);      spellPut("shui", -13395);      spellPut("shun", -13391);      spellPut("shuo", -13387);      spellPut("si", -13383);      spellPut("song", -13367);      spellPut("sou", -13359);      spellPut("su", -13356);      spellPut("suan", -13343);      spellPut("sui", -13340);      spellPut("sun", -13329);      spellPut("suo", -13326);      spellPut("ta", -13318);      spellPut("tai", -13147);      spellPut("tan", -13138);      spellPut("tang", -13120);      spellPut("tao", -13107);      spellPut("te", -13096);      spellPut("teng", -13095);      spellPut("ti", -13091);      spellPut("tian", -13076);      spellPut("tiao", -13068);      spellPut("tie", -13063);      spellPut("ting", -13060);      spellPut("tong", -12888);      spellPut("tou", -12875);      spellPut("tu", -12871);      spellPut("tuan", -12860);      spellPut("tui", -12858);      spellPut("tun", -12852);      spellPut("tuo", -12849);      spellPut("wa", -12838);      spellPut("wai", -12831);      spellPut("wan", -12829);      spellPut("wang", -12812);      spellPut("wei", -12802);      spellPut("wen", -12607);      spellPut("weng", -12597);      spellPut("wo", -12594);      spellPut("wu", -12585);      spellPut("xi", -12556);      spellPut("xia", -12359);      spellPut("xian", -12346);      spellPut("xiang", -12320);      spellPut("xiao", -12300);      spellPut("xie", -12120);      spellPut("xin", -12099);      spellPut("xing", -12089);      spellPut("xiong", -12074);      spellPut("xiu", -12067);      spellPut("xu", -12058);      spellPut("xuan", -12039);      spellPut("xue", -11867);      spellPut("xun", -11861);      spellPut("ya", -11847);      spellPut("yan", -11831);      spellPut("yang", -11798);      spellPut("yao", -11781);      spellPut("ye", -11604);      spellPut("yi", -11589);      spellPut("yin", -11536);      spellPut("ying", -11358);      spellPut("yo", -11340);      spellPut("yong", -11339);      spellPut("you", -11324);      spellPut("yu", -11303);      spellPut("yuan", -11097);      spellPut("yue", -11077);      spellPut("yun", -11067);      spellPut("za", -11055);      spellPut("zai", -11052);      spellPut("zan", -11045);      spellPut("zang", -11041);      spellPut("zao", -11038);      spellPut("ze", -11024);      spellPut("zei", -11020);      spellPut("zen", -11019);      spellPut("zeng", -11018);      spellPut("zha", -11014);      spellPut("zhai", -10838);      spellPut("zhan", -10832);      spellPut("zhang", -10815);      spellPut("zhao", -10800);      spellPut("zhe", -10790);      spellPut("zhen", -10780);      spellPut("zheng", -10764);      spellPut("zhi", -10587);      spellPut("zhong", -10544);      spellPut("zhou", -10533);      spellPut("zhu", -10519);      spellPut("zhua", -10331);      spellPut("zhuai", -10329);      spellPut("zhuan", -10328);      spellPut("zhuang", -10322);      spellPut("zhui", -10315);      spellPut("zhun", -10309);      spellPut("zhuo", -10307);      spellPut("zi", -10296);      spellPut("zong", -10281);      spellPut("zou", -10274);      spellPut("zu", -10270);      spellPut("zuan", -10262);      spellPut("zui", -10260);      spellPut("zun", -10256);      spellPut("zuo", -10254);    }    /**   * 获得单个汉字的Ascii.   * @param cn char 汉字字符   * @return int 错误返回 0,否则返回ascii   */    public static int getCnAscii(char cn) {      byte[] bytes = (String.valueOf(cn)).getBytes();      if (bytes == null || bytes.length > 2 || bytes.length <= 0) { //错误            return 0;      }      if (bytes.length == 1) { //英文字符            return bytes;      }      if (bytes.length == 2) { //中文字符            int hightByte = 256 + bytes;            int lowByte = 256 + bytes;            int ascii = (256 * hightByte + lowByte) - 256 * 256;            return ascii;      }      return 0; //错误    }    /**   * 根据ASCII码到SpellMap中查找对应的拼音   * @param ascii int   * 字符对应的ASCII   * @return String   * 拼音,首先判断ASCII是否>0&<160,如果是返回对应的字符,   * <BR>否则到SpellMap中查找,如果没有找到拼音,则返回null,如果找到则返回拼音.   */    public static String getSpellByAscii(int ascii) {      if (ascii > 0 && ascii < 160) { //单字符            return String.valueOf( (char) ascii);      }      if (ascii < -20319 || ascii > -10247) { //不知道的字符            return null;      }      Set keySet = 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 (ascii >= asciiRang0 && ascii < asciiRang) { //区间找到                  return (spell0 == null) ? spell : spell0;                }                else {                  spell0 = spell;                  asciiRang0 = asciiRang;                }            }      }      return null;    }    /**   * 返回字符串的全拼,是汉字转化为全拼,其它字符不进行转换   * @param cnStr String   * 字符串   * @return String   * 转换成全拼后的字符串   */    public static String getFullSpell(String cnStr) {      if (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(chars);            if (ascii == 0) { //取ascii时出错                retuBuf.append(chars);            }            else {                String spell = getSpellByAscii(ascii);                if (spell == null) {                  retuBuf.append(chars);                }                else {                  retuBuf.append(spell);                } // end of if spell == null            } // end of if ascii <= -20400      } // end of for      return retuBuf.toString();    }    /**   * 第一个字取全拼,后面的字取首字母   * @param cnStr   * @return 返回转换后的拼   */    public static String getFirstSpell(String cnStr) {      if (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(chars);            if (ascii == 0) { //取ascii时出错                retuBuf.append(chars);            }            else {                String spell = getSpellByAscii(ascii);                if (spell == null) {                  retuBuf.append(chars);                }                else {                  if (i == 0) { //第一个字取全拼                        retuBuf.append(spell);                  }                  else { //后面的字取首字母                        retuBuf.append(spell.substring(0, 1));                  }                }            }      } // end of for      return retuBuf.toString();    }    public static void main(String[] args) {      String str = "中华人明共和国Haha";      // 转换成拼音      System.out.println(ChineseToEnglish2.getFullSpell(str));      // 中文第一个字全拼,其余去首字母      System.out.println(ChineseToEnglish2.getFirstSpell(str));      // ascii 转 字母      System.out.println(ChineseToEnglish2.getSpellByAscii(65));      // 字母 转 ascii      System.out.println(ChineseToEnglish2.getCnAscii('0'));    }}
页: [1]
查看完整版本: java程序将汉字转成拼音的两种方法