pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库,作者是Li Min (xmlerlimin@gmail.com)。以下是一些具体的介绍和使用方式。
1.
2.
(1)
(2)
(3)
(4)
(5)
(6)
3.
命令行执行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(以数字代替声调) :
WITHOUT_TONE (无声调) :
WITH_TONE_MARK (有声调) :
第二个下拉框是碰到unicode 的ü 、v 和 u时的显示方式,共有三个方式, 以下是以声调为WITH_TONE_NUMBER方式显示汉字“吕”示例:
WITH_U_AND_COLON : lu:3
WITH_V :
WITH_U_UNICODE :
第三个下拉框是控制生成的拼音是以大写方式显示还是以小写方式显示,以汉字“国”示例如下:
LOWERCASE :guó
UPPERCASE :GUÓ
上图的汉字转化成拼音后,有六种显示方式,这是因为pinyin4j支持将汉字转化成六种拼音表示法。其对应关系是:汉语拼音-Hanyu Pinyin,通用拼音-Tongyong Pinyin, 威妥玛拼音(威玛拼法)-Wade-Giles
4.
代码:
- 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.BadHanyuPinyinOutputForm atCombination; -
- 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 (BadHanyuPinyinOutputForm atCombination 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!
附件:
1.各种拼音说明
Yale Pinyin是在第二次世界大战期间由美国军方发明的编码系统,主要为了让在中国地区作战的美军士兵能够快速地熟悉汉语发音,能够向当地人请求帮助,可以说这是一个速成教材,它的目的甚至不是用来互相交流而是使士兵在发音时不会被中国人听错就可以了。
Gwoyeu Romatzyh:即国语罗马字,它是由林语堂提议建立的,在1928年由国民政府大学堂颁布推行。在中国的台湾省这一编码体系得到了保留,但是它就像 Yale一样现在几乎很少有人使用,在1986年,国语罗马字被国语注音符号第二式(MPSII)所取代,在2002年,又被通用拼音(Tongyong Pinyin)取代,成为台湾今天正式的官方汉语音译编码体系。
威妥玛拼音,习惯称作威妥玛拼法或威玛式拼音、韦氏拼音、威翟式拼音,是一套用于拼写中文普通话的罗马拼音系统。19世纪中叶由英国人威妥玛(Thomas Francis Wade)发明,后由翟理斯(Herbert Allen Giles)完成修订,并编入其所撰写的汉英字典。