首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

使用pinyin4j解决中文转换为拼音的有关问题

2012-12-27 
使用pinyin4j解决中文转换为拼音的问题博客第一篇日志啊,呵呵,那就记录一下我昨天在工作中遇到的汉字转换

使用pinyin4j解决中文转换为拼音的问题

博客第一篇日志啊,呵呵,那就记录一下我昨天在工作中遇到的汉字转换拼音的问题吧~~使用pinyin4j解决中文转换为拼音的有关问题

在工程中引入pinyin4j-2.5.0.jar,该jar包可以实现汉字转换为拼音,汉字转换为拼音首字母,以及得到字符串ASCII码,具体用法参见以下代码:

package util;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.exception.BadHanyuPinyinOutputFormatCombination;/** * 汉字转换位汉语拼音,英文字符不变 *  * @author *  */public class CnToSpell {/** * 汉字转换为汉语拼音首字母,英文字符不变 *  * @param chines *            汉字 * @return 拼音 */public static String getFirstSpell(String chines) {String pinyinName = "";char[] nameChar = chines.toCharArray();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i = 0; i < nameChar.length; i++) {if (nameChar[i] > 128) {try {pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0);} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();} catch (NullPointerException e) {// 如果是日文,可能抛出该异常e.printStackTrace();}} else {pinyinName += nameChar[i];}}return pinyinName;}/** * 汉字转换位汉语拼音,英文字符不变 *  * @param chines *            汉字 * @return 拼音 */public static String getFullSpell(String chines) {String pinyinName = "";char[] nameChar = chines.toCharArray();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i = 0; i < nameChar.length; i++) {if (nameChar[i] > 128) {try {pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0];} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();} catch (NullPointerException e) {// 如果是日文,可能抛出该异常e.printStackTrace();}} else {pinyinName += nameChar[i];}}return pinyinName;}/** * 将字符串转换成ASCII码 *  * @param cnStr * @return String */public static String getCnASCII(String chines) {StringBuffer strBuf = new StringBuffer();// 将字符串转换成字节序列byte[] bGBK = chines.getBytes();for (int i = 0; i < bGBK.length; i++) {// System.out.println(Integer.toHexString(bGBK[i] & 0xff));// 将每个字符转换成ASCII码strBuf.append(Integer.toHexString(bGBK[i] & 0xff));}return strBuf.toString();}public static void main(String[] args) {System.out.println(getFirstSpell("陶喆"));System.out.println(getFullSpell("陶喆"));System.out.println(getFirstSpell("欢迎来到Java中文社区"));// System.out.println(getFullSpell("にほん欢/.,;'迎来到Java中文社区"));// 日文会报异常哦System.out.println(getFullSpell("嘅囧誰說壞學生來勼髮視頻裆児"));System.out.println(getCnASCII("嘅囧"));}}

?

输出结果为:

tz
taozhe
hyldJavazwsq
kaijiongshuishuohuaixueshenglaijiufashipindanger
86fe87e5

热点排行