本文将介绍如何在代码中打印汉语拼音的声调。
(1)原理
汉语拼音的声调是在6个元音字母上方:a、o、e、i、u、ü,所以只需要处理这6个元音字母和声调的组合即可。用计算机术语来说,每个可打印字母,对某个字符集来说,都有唯一的、固定不变的编码值。ī、í、ǐ、ì 这带声调的字母,并不例外,它们也分别对应着不同的编码值。所以要打印各种声调,其原理是输出各元音声调字母的编码值。
(2)Unicode声调编码
本小节介绍各元音字母的4个声调在Unicode字符集中的编码值。
声调 | 编码值 |
---|---|
ā | 0x0101 |
á | 0x00E1 |
ǎ | 0x01CE |
à | 0x00E0 |
ō | 0x014D |
ó | 0x01F3 |
ǒ | 0x01D2 |
ò | 0x01F2 |
ē | 0x0113 |
é | 0x00E9 |
ě | 0x011B |
è | 0x00E8 |
ī | 0x012B |
í | 0x00ED |
ǐ | 0x01D0 |
ì | 0x00EC |
ū | 0x016b |
ú | 0x00FA |
ǔ | 0x01D4 |
ù | 0x00F9 |
ǖ | 0x01D6 |
ǘ | 0x01D8 |
ǚ | 0x01DA |
ǜ | 0x01DC |
这些编码值在Unicode官方编码文档上可以查到。
(3)打印声调
有了上述声调的编码值,打印起来就简单了。将所有要打印的声调用对应的Unicode编码替换即可。
例如,要打印“鲁迅”的拼音:
System.out.println("l\u01D4 x\u00F9n");
输出结果:
lǔ xùn
打印“叔本华”的拼音:
System.out.println("sh\u016B b\u011Bn hu\u00E1");
输出结果:
shū běn huá
Over!