pinyin4j新手教程

Pinyin4j新手教程

 

 

pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库,作者是Li Min (xmlerlimin@gmail.com)。

下面是一些详细的介绍和使用方式。

 

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 的ü  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代码演示样例

代码:

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

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


posted @ 2015-07-23 21:49  zfyouxi  阅读(600)  评论(0编辑  收藏  举报