pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库,作者是Li Min ()。以下是一些具体的介绍和使用方式。

1. pinyin4j的官方下载地址http://sourceforge.net/projects/pinyin4j/files/,目前最新的版本是2.5.0

2. 下载解压后的目录结构及说明如下

(1) doc : pinyin4j的api文档

(2) lib : pinyin4j的jar包

(3) src : pinyin4j的源代码

(4) CHANGELOG.txt : pinyin4j的版本更新日志

(5) COPYING.txt : LICENSE说明

(6) README.txt : pinyin4j的概要介绍

3. 运行GUI demo

命令行执行cd ${pinyin-install-dir}/lib,进入到pinyin4j-2.5.0.jar所在的目录,敲入java -jar pinyin4j-2.5.0.jar执行,GUI界面如下:

上图是输入汉字“中”,执行Convert to Pinyin后的截图。Format后有三个下拉框,第一个下拉框有三个选项,用来控制生成的拼音声调的显示方式,三个方式及其效果如下(以汉字“中”,选中Formatted hanyu Pinyin选项卡测试):

WITH_TONE_NUMBER(以数字代替声调) : zhong1 zhong4

WITHOUT_TONE (无声调) : zhong zhong

WITH_TONE_MARK (有声调) : zhōng zhòng

第二个下拉框是碰到unicode 的ü 、v 和 u时的显示方式,共有三个方式, 以下是以声调为WITH_TONE_NUMBER方式显示汉字“吕”示例:

WITH_U_AND_COLON : lu:3

WITH_V : lv3

WITH_U_UNICODE : lü3

第三个下拉框是控制生成的拼音是以大写方式显示还是以小写方式显示,以汉字“国”示例如下:

LOWERCASE :guó

UPPERCASE :GUÓ

上图的汉字转化成拼音后,有六种显示方式,这是因为pinyin4j支持将汉字转化成六种拼音表示法。其对应关系是:汉语拼音-Hanyu Pinyin,通用拼音-Tongyong Pinyin, 威妥玛拼音(威玛拼法)-Wade-Giles Pinyin, 注音符号第二式-MPSII Pinyin, 耶鲁拼法-Yale Pinyin和国语罗马字-Gwoyeu Romatzyh。

4. 字符串转化成拼音Java代码示例

代码:

[java:nogutter]view plaincopyprint?
  1. package testcase;
  2. import net.sourceforge.pinyin4j.PinyinHelper;
  3. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  4. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  5. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
  6. import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
  7. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
  8. public class PinYinUtil {
  9. public static String getPinYin(String inputString) {
  10. HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
  11. format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  12. format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
  13. format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
  14. char[] input = inputString.trim().toCharArray();
  15. StringBuffer output = new StringBuffer("");
  16. try {
  17. for (int i = 0; i < input.length; i++) {
  18. if (Character.toString(input[i]).matches("[//u4E00-//u9FA5]+")) {
  19. String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);
  20. output.append(temp[0]);
  21. output.append(" ");
  22. } else
  23. output.append(Character.toString(input[i]));
  24. }
  25. } catch (BadHanyuPinyinOutputFormatCombination e) {
  26. e.printStackTrace();
  27. }
  28. return output.toString();
  29. }
  30. public static void main(String[] args) {
  31. String chs = "我是中国人! I'm Chinese!";
  32. System.out.println(chs);
  33. System.out.println(getPinYin(chs));
  34. }
  35. }

package testcase;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 PinYinUtil { public static String getPinYin(String inputString) { HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.LOWERCASE); format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK); format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); char[] input = inputString.trim().toCharArray(); StringBuffer output = new StringBuffer(""); try { for (int i = 0; i < input.length; i++) { if (Character.toString(input[i]).matches("[//u4E00-//u9FA5]+")) { String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format); output.append(temp[0]); output.append(" "); } else output.append(Character.toString(input[i])); } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } return output.toString(); } public static void main(String[] args) { String chs = "我是中国人! I'm Chinese!"; System.out.println(chs); System.out.println(getPinYin(chs)); } }

运行结果:我是中国人! I'm Chinese!
wŏ shì zhōng guó rén ! I'm Chinese!

附件:

1.各种拼音说明

Yale Pinyin是在第二次世界大战期间由美国军方发明的编码系统,主要为了让在中国地区作战的美军士兵能够快速地熟悉汉语发音,能够向当地人请求帮助,可以说这是一个速成教材,它的目的甚至不是用来互相交流而是使士兵在发音时不会被中国人听错就可以了。

Gwoyeu Romatzyh:即国语罗马字,它是由林语堂提议建立的,在1928年由国民政府大学堂颁布推行。在中国的台湾省这一编码体系得到了保留,但是它就像 Yale一样现在几乎很少有人使用,在1986年,国语罗马字被国语注音符号第二式(MPSII)所取代,在2002年,又被通用拼音(Tongyong Pinyin)取代,成为台湾今天正式的官方汉语音译编码体系。

威妥玛拼音,习惯称作威妥玛拼法或威玛式拼音、韦氏拼音、威翟式拼音,是一套用于拼写中文普通话的罗马拼音系统。19世纪中叶由英国人威妥玛(Thomas Francis Wade)发明,后由翟理斯(Herbert Allen Giles)完成修订,并编入其所撰写的汉英字典。

参考资料:

1. pinyin4j的官方资料

2. 汉语言的罗马化

http://icookies.spaces.live.com/blog/cns!2CC37E2F87FB3864!170.entry

3. Wiki: 威妥瑪拼音(维基百科)

http://wapedia.mobi/zh/%E5%A8%81%E5%A6%A5%E7%8E%9B%E6%8B%BC%E9%9F%B3

将汉字转换成汉语拼音方法,Pinyin4j入门教程相关推荐

  1. python 加注拼音-一个将汉字转换成汉语拼音的python库的代码

    下边代码段是关于一个将汉字转换成汉语拼音的python库的代码. #!/usr/bin/env python """ Author:cleverdeng E-mail:c ...

  2. 汉字转拼音 python_python实现将汉字转换成汉语拼音的库

    本文实例讲述了python实现将汉字转换成汉语拼音的库.分享给大家供大家参考.具体分析如下: 下面的这个python库可以很容易的将汉字转换成拼音,其中用到了一个word.data 的字典,可点击此处 ...

  3. python汉字转拼音代码,一个将汉字转换成汉语拼音的python库的代码

    下边代码段是关于一个将汉字转换成汉语拼音的python库的代码. #!/usr/bin/env python """ Author:cleverdeng E-mail:[ ...

  4. python咋变汉语_python实现将汉字转换成汉语拼音的库

    本文实例讲述了python实现将汉字转换成汉语拼音的库.分享给大家供大家参考.具体分析如下: 下面的这个python库可以很容易的将汉字转换成拼音,其中用到了一个word.data 的字典,可点击此处 ...

  5. 将汉字转换成汉语拼音的工具代码

    这个代码是在上家公司做项目时使用到的, 现在的一个同事要完成类似这样的功能, 所以整理出来, 其实这个是可以在网上找到的, 不知原作者是谁, 如果有不妥之处, 请见谅, 都是为了项目吗! packag ...

  6. JS_将汉字转换成汉语拼音JS版

    2019独角兽企业重金招聘Python工程师标准>>> 用人在知道里面提问,如何用javascript程序把汉字转换为拼音的首字母,帖子地址是:http://zhidao.baidu ...

  7. 汉字转换成拼音的工具----pinyin4j

    今天在无意中发现了pinyin4j这个强大的工具,它能帮助我们完成将汉字转换成拼音的工作,这给我们的开发带来了巨大的便利,意识到这一点,我果断的学习了.在开始记录我的学习成果前,我必须先感谢pinyi ...

  8. hive 转拼音udf_自定义UDF函数:将汉字转换成拼音

    工作需求要讲汉字转换成拼音,自定义UDF函数 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...

  9. 自定义UDF函数:将汉字转换成拼音

    工作需求要讲汉字转换成拼音,自定义UDF函数 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...

最新文章

  1. android studio 导入库提示失败的处理方法以及androidstudio 清理缓存的方法
  2. MySQL性能测试工具 mysqlslap
  3. 用Spring Cloud Alibaba开发微服务会更香吗?
  4. 2009-12-12
  5. 用python排教室_开学季,教你用Python画大学教室座位神分区图!网友直呼“中枪”...
  6. 使用pycaffe读取caffemodel参数(保存到txt文件)
  7. 2016-6-28 工作总结
  8. 里氏替换原则_代码需要有单一职责,还要开闭,里氏替换又是什么鬼?
  9. Unhandled event loop exception Item not added
  10. bcp 不能调用where 子句_技术分享 || Mysql中IS NULL、IS NOT NULL不能走索引?
  11. Web前端笔记(1)
  12. [leetcode]169. 多数元素
  13. 谈谈嵌入式设备用户界面的未来
  14. 【黑金视频连载】NIOS II视频教程正式连载了!!!!!!!!
  15. MySQL免安装版 图文教程【5.7版本,纯净版win7安装】
  16. Julia : |>的用法及多参数下的使用
  17. nginx处理域名后面多一个点
  18. Newtonsoft.Json.dll 的使用
  19. 2020年日历电子版(打印版)_2020年日历表(高清A4可打印版).pdf
  20. 如何利用Python开发App?

热门文章

  1. 学习新方法:加强探索性测试技能
  2. java实现第五届蓝桥杯锦标赛
  3. Microsoft Exchange Server 2003 反垃圾邮件部署
  4. 湖南c语言国二题库,国二C语言题库文档.doc
  5. 国二c语言大纲,C语言国二考试大纲.doc
  6. 极客日报:iPhone13 系列售价曝光:没有涨价;曝华为P50系列7月29日发布;丁磊称专业比学校更重要:你同意吗?
  7. mysql myisam表加索引_MySQL中myisam和innodb的主键索引有什么区别
  8. 关于shiro授权 This subject is anonymous - it does not have any identifying principals and
  9. [hiho 18]带修改的RMQ问题
  10. SylixOS周期定时抖动分析