工作原因,需要将中文转成拼音放置到数据库的字段中,以供搜索使用.下面放上代码以及说明.
我使用的是PINYIN4J的开源.网上很多地方可以下载到.
见面是具体代码:
mport net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.*; import net.sourceforge.pinyin4j.format.exception.*; public class HZ2PY { public static void main(String[] args) { System.out.println(new HZ2PY().toPinYin("[(&������%����<>|��������;1:��� !11��@��?3$#~3��*4��aa,a{}`������bb^��bA��A]AZ����Z��Z).mp3")); } public static String toPinYin(String hanzhis) { String py = ""; try { System.out.println(hanzhis); hanzhis = hanzhis.replaceAll("-", "").replaceAll("\\.", "").replaceAll("\\+", "").replaceAll("\\��", "") .replaceAll("\\��", "").replaceAll("\\(", "").replaceAll("\\)", "").replaceAll("\\��", "").replaceAll("[A-Z]", "") .replaceAll("[a-z]", "").replaceAll("[0-9]", "").replaceAll("��", "").replaceAll(" ", "").replaceAll("!", "") .replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll(":", "").replaceAll("\\[", "") .replaceAll("\\]", "").replaceAll("&", "").replaceAll("\\%", "").replaceAll("\\$", "").replaceAll("#", "") .replaceAll("\\@", "").replaceAll("~", "").replaceAll("`", "").replaceAll("\\^", "").replaceAll(";", "") .replaceAll(",", "").replaceAll("<", "").replaceAll(">", "").replaceAll("\\{", "").replaceAll("\\}", "") .replaceAll("\\|", "").replaceAll("\\?", "").replaceAll("\\*", "").replaceAll("\\��", "").replaceAll("\\��", "") .replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "") .replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "") .replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "") .replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "").replaceAll("\\��", "") .replaceAll("\\��", "").replaceAll("\\��", "") ; System.out.println(hanzhis); CharSequence s= hanzhis; char [] hanzhi=new char[s.length()]; for(int i=0;i<s.length();i++) { hanzhi[i]=s.charAt(i); } char [] t1 =hanzhi; String[] t2 = new String[s.length()]; //���������ʽ net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat(); t3.setCaseType(HanyuPinyinCaseType.UPPERCASE); t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE); t3.setVCharType(HanyuPinyinVCharType.WITH_V); int t0=t1.length; try { for (int i=0;i<t0;i++) { t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3); py=py+t2[0].toString(); } } catch (BadHanyuPinyinOutputFormatCombination e1) { e1.printStackTrace(); } } catch(Exception e) { e.printStackTrace(); } return py.trim(); } }
t3.setCaseType(HanyuPinyinCaseType.UPPERCASE);
t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
t3.setVCharType(HanyuPinyinVCharType.WITH_V);
可以设置转换后拼音的大小写,字体等.