Java汉字转拼音库,Pinyin4j

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

       

1.pinyin4j的官方下载地址http://sourceforge.net/projects/pinyin4j/files/

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代码

  1. import net.sourceforge.pinyin4j.PinyinHelper;
  2. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  3. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  4. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
  5. import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
  6. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
  7. public class PinYinUtil {
  8. /**
  9. * 将字符串中的中文转化为拼音,其他字符不变
  10. *
  11. * @param inputString
  12. * @return
  13. */
  14. public static String getPingYin(String inputString) {
  15. HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
  16. format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  17. format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  18. format.setVCharType(HanyuPinyinVCharType.WITH_V);
  19. char[] input = inputString.trim().toCharArray();
  20. String output = "";
  21. try {
  22. for (int i = 0; i < input.length; i++) {
  23. if (java.lang.Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {
  24. String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);
  25. output += temp[0];
  26. } else
  27. output += java.lang.Character.toString(input[i]);
  28. }
  29. } catch (BadHanyuPinyinOutputFormatCombination e) {
  30. e.printStackTrace();
  31. }
  32. return output;
  33. }
  34. /**
  35. * 获取汉字串拼音首字母,英文字符不变
  36. * @param chinese 汉字串
  37. * @return 汉语拼音首字母
  38. */
  39. public static String getFirstSpell(String chinese) {
  40. StringBuffer pybf = new StringBuffer();
  41. char[] arr = chinese.toCharArray();
  42. HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  43. defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  44. defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  45. for (int i = 0; i < arr.length; i++) {
  46. if (arr[i] > 128) {
  47. try {
  48. String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
  49. if (temp != null) {
  50. pybf.append(temp[0].charAt(0));
  51. }
  52. } catch (BadHanyuPinyinOutputFormatCombination e) {
  53. e.printStackTrace();
  54. }
  55. } else {
  56. pybf.append(arr[i]);
  57. }
  58. }
  59. return pybf.toString().replaceAll("\\W", "").trim();
  60. }
  61. public static void main(String[] args) {
  62. String chs = "我是中国人! I‘m Chinese!";
  63. System.out.println(chs);
  64. System.out.println(getPinYin(chs));
  65. }
  66. }

 运行结果:我是中国人! 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

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

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

来自:http://blog.csdn.net/hfhwfw/article/details/6030816

Java汉字转拼音库,Pinyin4j

时间: 2024-08-12 11:08:21

Java汉字转拼音库,Pinyin4j的相关文章

java 中文转拼音之pinyin4j

一.简单介绍 有时候,需要将汉字编程对应的拼音,以方便数据的处理.比如在Android手机应用的开发上,要查询联系人的姓名,通常都是用拼音进行查询的. 比如要查询"曹孟德",就可以输入"cmd",即"曹孟德"三个汉字的拼音"caomengde"各字的首字母.但是怎样才能将"曹孟德"翻译成"caomengde"呢? 很简单的办法就是建立一个大的对照表(比如用关联容器Map),比如<&

java汉字转拼音以及得到首字母通用方法

1. [代码]PingYinUtil    package oa.common.utils; import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;import net.sourceforge.pinyin4j.form

java汉字转换为拼音

原文:java汉字转换为拼音 代码下载地址:http://www.zuidaima.com/share/1550463275240448.htm 输入的字符串是:"这是一个中文" 运行结果: 标签: java 汉字 拼音 转化话题: 语言基础 脚本和工具

[转]Java汉字按照拼音排序

最近项目上使用到汉字排序的问题,网上搜索了一下后普遍使用下面的方法比较. @Test public void test_sort_pinyin() { Collator cmp = Collator.getInstance(java.util.Locale.CHINA); String[] arr = { "张三", "李四", "王五", "赵六", "JAVA", "123", &q

java汉字转拼音工具类

添加依赖 <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.1</version> </dependency> 工具类代码: public class PinYinUtils { public static HanyuPinyinOutputFormat PINYIN_FORMA

Java汉字转拼音pinyin4j

package com.joyce.pinyin4j; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinTo

Python 汉字转拼音库 pypinyin

一.初衷: 一些开源软件的配置文件中识别区分的部分用英文,那么我们在批量生成配置文件的时候,可以从CMDB导入汉字(idc_name), 然后将它转换成拼音,再或者拼接上IP地址,以便更准确的识别.例如:Smokeping的Targets配置文件,如下: +telcom menu = 中国电信 title = telcom ++yunfuxinxingshuangxian-01-61 menu = 云浮新兴双线-01 title = 61.11.11.11 host = 61.11.11.11

java 汉字转拼音

package com.hxkr.util; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneTyp

JAVA汉字转拼音

首先先要导入pinyin4j-2.5.0.jar 这个jar包 /** * 得到 全拼 * * @param src * @return */ public static String getPingYin(String src) { char[] t1 = null; t1 = src.toCharArray(); String[] t2 = new String[t1.length]; HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFor