博客第一篇日志啊,呵呵,那就記錄一下我昨天在工作中遇到的漢字轉換拼音的問題吧~~
在工程中引入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
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
