Pinyin4j是Java中的拼音库,作者李民。

拼音这件事其实非常简单,无非是一种映射。但是拼音中包含的学问很多,很多前贤都研究过汉语拼音,提出了多种拼音方案。随着历史变迁,拼音的形式也在不断发生变化,所以设计一个拼音库就需要考虑到拼音的格式、拼音的体系。

一、拼音体系

1、GWOYEU_ROMATZYH

国语拼音起源于民国时期,制作者赵元任、林语堂。

2、HANYU_PINYIN

《汉语拼音方案》,是1958年第一届全国人民代表大会第五次会议正式批准公布的拉丁字母式的汉语拼音方案。但是实际落实到教学和普及使用则是1960年前后,当时有中国文字改革委员会发行的汉语拼音报,此后汉语拼音开始逐步取代了原来的汉字注音字母直至现在汉语拼音在我国的社会各个领域都占有极其重要的地位。

3、MPS2_PINYIN

Mandarin Phonetic Symbols 2 (MPS2) Pinyin system

4、通用拼音

通用拼音,是中国台湾地区的一种中文拉丁化拼音法。由“中央研究院民族学研究所”副研究员余伯泉在1998年发表,后经数次修正,于2000年由台湾教育主管部门宣布使用,并取代原定改用的国语注音符号第二式,台湾当局政府自2002年起全面推行以通用拼音为基础的统一译音政策,但并未强制要求使用。2008年9月,中国台湾地区确定中文译音政策将由“通用拼音”改为采用“汉语拼音”,涉及中文英译的部分,都将要求采用汉语拼音。通用拼音有个略去 f 而使用 v(注音符号:万)的音标版,可能原先用于客家话,但实际上拼读国语时无用。

5、威氏拼音

WADEGILES_PINYIN
威妥玛式拼音法(Wade-Giles romanization)又称威妥玛-翟理斯式拼音,简称威氏拼音法 。
它是1867年开始的,由英国人威妥玛(Thomas Francis Wade 1818年—1895年,今天的习惯应该翻译成托玛斯·韦德)等人合编的注音规则,叫“威氏拼音”。
威妥玛曾于1871年任英国驻华公使,1883年回国。1888年起在剑桥大学任教授,讲授汉语,直至1895年逝世。他以罗马字母为汉字注音,创立威氏拼音法。后来H.A.Giles稍加修订,合称WG威氏拼音法(Wade-Giles System)。它的最大优点是利用送气符号(‘)来表示送气的声母。

6、耶鲁拼音

1943年初,美国一批新学员包括即将来华参加抗日战争的军人集中到美国耶鲁大学,进行短期训练,学习汉语。为了适应需要,由美国耶鲁大学远东语言研究所的肯尼迪负责拟订了一个拼写汉语的拉丁字母方案。这个方案主要用来编写汉语的口语教材,供学员做会话练习。
耶鲁方案的主要特点是﹕(1)以北京语音为标准音﹔(2)用b﹑d﹑g表示不送气清塞音﹐p﹑t﹑k表示送气清塞音﹐不再使用送气符号﹔(3)用y﹑w﹑yw表示介音﹐如tyan(天)﹑gwo(国)﹑jywe(觉)﹔(4)用r﹑z分别表示两个舌尖元音(即“知”﹑“资”后面的元音)﹔(5)用符号表示声调﹕第一声“–”﹐第二声“ˊ”﹐第三声“ˇ”﹐第四声“ˋ”﹔(6)实行按词分写。

二、拼音格式

1、大小写

拼音者,以少表多也。少的肯定是字母,多的肯定是中日韩三国文字。既然是字母,就要遵循人家用字母的规矩:区分大写小写。
如:大写 拼成 DAXIE还是daxie

2、音调类型

汉语是有音调的,如何表示音调?常见的有三种方法:忽略音调、使用后缀数字、使用带音调的字母
WITH_TONE_NUMBER da3
WITHOUT_TONE da
WITH_TONE_MARK dǎ

3、鱼

汉语拼音里面最奇葩的莫过于ü,这个字母是唯一的一个26个英语字母中没有的字符,它明明应该用v的,那样将会少掉无数争端。
还记得小时候神奇的歌谣:j、q、x三兄弟,和ü相遇把点吃。
如果用v表示ü,完全没有这么多冗余的规则。所以设计拼音的人有点脑残。
在pinyin4j中,ü被作为一种格式来专门讨论。表示方式有三种:u+冒号、v、ü。
WITH_U_AND_COLON u:
WITH_V v
WITH_U_UNICODE ü

在以上三种格式中,并非有2×3×3=18种拼音方式,因为这些格式之间会产生冲突。主要原因是鱼的两种表示法u+冒号、v跟音调类型中的WITH_TONE_MARK不兼容。

三、关于pinyin4j

pinyin4j已经很古老了,代码是放在sourceforge上的,maven仓库中都没有。另外,pinyin4j引用的xml解析库sparta-xml虽然据说很快,但是很小众。
有人把pinyin4j迁移到了github并放到了maven仓库中:https://github.com/belerweb/pinyin4j/

Pinyin4j导读的更多相关文章

  1. 通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母

    通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母 例如 我的中国心    ==> wdzgx 我的中国心ya ==> wdzgxya woai我的中国 ==> w ...

  2. java-汉字转换拼音-pinyin4j.jar

    使用pinyin4j将汉字转成拼音,附件为pinyin4j的jar包 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefo ...

  3. 汉字转拼音(pinyin4j)

    1.引入依赖 <dependency> <groupId>pinyin4j.sourceforge.net</groupId> <artifactId> ...

  4. Effective C++ 之 0 导读(Introduction)

    Effective C++ 导读 (Introduction) 术语(terminology) 声明式 (declaration) 是告诉编译器某个东西的名称和类型(type),但略去细节.以下都是声 ...

  5. 【转】java开源类库pinyin4j的使用

    最近CMS系统为了增加查询的匹配率,需要增加拼音检索字段,在网上找到了pinyin4j的java开源类库,提供中文转汉语拼音(并且支持多音字), 呵呵,看了看他的demo,决定就用它了,因为我在实际使 ...

  6. cookie导读,理解什么是cookie

    一.cookie导读,理解什么是cookie    1.什么是cookie:cookie是一种能够让网站服务器把少量数据(4kb左右)存储到客户端的硬盘或内存.并且读可以取出来的一种技术.    2. ...

  7. 利用PinYin4j 实现List中的对象按数字,字母, 汉字排序

    要排序的对象: import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPi ...

  8. MINIX3 导读分析

    一个操作系统的分析是属于一个非常庞大的工程,操作系统就像是一个人造的 人,每一个模块想完全发挥功效,很有可能需要很多模块的支持才能够实现.所 以在分析 MINIX3 时,我认为同时看多个模块对于理解 ...

  9. pinyin4j

    最近在倒腾与搜索相关的拼音检查技术,顺便看了一下中文转拼音开源插件pinyin4j的源码,参考资料:http://blog.csdn.net/hfhwfw/archive/2010/11/23/603 ...

随机推荐

  1. Maven镜像更换为阿里云中央仓库

    前言 maven仓库默认在国外,使用难免很慢,尤其是下载依赖的时候,换为国内镜像,让你感受飞一般的感觉.国内支持maven镜像的有阿里云,开源中国等,这里换为阿里云的. 更换 修改maven配置文件s ...

  2. 一些非常实用的JSON 教程

    以下内容来自W3school. JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 ...

  3. UEditor常用设置函数记录

    在线文档对UEditor说明不够全面,收集了一些常用的方法和基本设置,以供参考. 1.创建编辑器 UE.getEditor('editor', { initialFrameWidth:"10 ...

  4. android 微信听筒无声

    Dual talk项目sim卡插在卡2时.微信听筒无声: 第三方APP在听筒接听语音时会固定去设audio_mode为incall,而不会去管以下是sim1还是sim2在位. 而speechdrive ...

  5. Laravel学习笔记之Session源码解析(中)

    说明:在上篇中学习了session的启动过程,主要分为两步,一是session的实例化,即\Illuminate\Session\Store的实例化:二是从session存储介质redis中读取id ...

  6. Android -- DiskLruCache

    DiskLruCache 创建一个磁盘缓存对象: public static DiskLruCache open(File directory, int appVersion, int valueCo ...

  7. JqueryValidate表单相同Name不校验问题解决

    在使用Jquery validate中遇到一个问题,当表单元素有name相同字段时,validate只校验表单元素name第一个值是否通过校验,比如 <input type="text ...

  8. iOS 获取已安装 的APP

    -(void)getAppPlist { Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace ...

  9. maven安装配置部署建项运行

    http://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-websocket/1.4.1.RELEA ...

  10. SQL与SQL Server

    SQL--关系数据库的国际标准语言. SQL Server--著名的数据库管理系统.其他著名的数据库管理系统还有Oracle.Sybase等,它们都实现了SQL语言.   在SQL中,完成所有核心功能 ...