为什么 Unicode 中会存在「凉」和「凉」这样两个极其相像的字符? – 知乎

【说明】 本文转载自:https://www.zhihu.com/question/20697984

为什么 Unicode 中会存在「凉」和「凉」这样两个极其相像的字符?

在贴吧里看到两个一模一样的 ID,仔细看才发现这两个字不一样。第一个「凉」是 U+F979,第二个「凉」是 U+51C9。

关注者

286

被浏览

75,312

5 个回答

王赟 Maigo

日语机器学习算法 话题的优秀回答者

我来补充一下为什么韩语里“凉”会是多音字,以及怎样用“正常”的方法打出这两个“凉”字。

韩语中“凉”字本来的读音是량(liang)。这里我姑且用英文字母l来表示韩文字母ㄹ的发音,内行人不要挑漏儿。

韩语有一定阿尔泰语系的特征,其中有一条就是单词不能以l开头。

韩语的固有词的确没有以l开头的,但是对于外来语,处理方式就不同了。

来自西方的外来语单词,开头的l会保留,比如라이터(la-i-teo,打火机);

来自汉语的单词,在朝鲜会保留的开头的l,但在韩国,需要按照如下的“头音法则”把l换掉:

  • 如果l后面接的是元音i或者以i开头的双元音,则l要去掉,比如“梨花”:리화(li-hwa)-> 이화(i-hwa)。韩国人的姓“李”拼作이(i)也是这个道理。
  • 如果l后面接的是其它元音,则l要换成n,比如“骆驼”:락타(lag-ta)-> 낙타(nag-ta)。

另外,以n开头的汉字词,如果n后面接的是元音i或者以i开头的双元音,也要把n去掉,比如“女子”:녀자(nyeo-ja)-> 여자(yeo-ja)。

根据头音法则可以发现,所有声母为l的汉字,在韩语中都是多音字。韩国的KS X 1001字符集比较奇葩,给多音字的每个读音都分配了一个编码。而Unicode为了与所有已有字符集兼容,必须也给韩语中多音字的每个读音分配一个编码。每个字的多个编码中,有一个是放在正常的汉字区(4E00 ~ 9FA5)的,其它的都放到了“中日韩兼容字符”区(F900 ~ FAFF)。于是在这个兼容区可以看到大量声母为l(或n)的汉字:

Windows自带的韩语输入法,在输入一个韩文字符后按右Ctrl键,可以将这个字符换成对应的汉字,如下图:

如果输入량(liang),那么打出的就是“凉”字(U+51C9);

如果输入经过头音法则变换后的양(yang),那么打出的就是“凉”字(U+F979)。

@刘松泉

已经发现了Unicode中有四个“樂”,这同样也是韩语多音字搞的鬼。

韩语中“樂”字的四种读音以及对应的Unicode编码、意义如下:

  • 악(ag),U+6A02(樂),对应普通话读音yuè,名词,音乐意;
  • 락(lag),U+F95C(樂),对应普通话读音lè,形容词,快乐意;
  • 낙(nag),U+F914(樂),为lag经头音法则变换后的结果;
  • 요(yo),U+F9BF(樂),对应普通话读音yào,动词,喜爱意。

编辑于 2016-05-23

梁海

字体英语CSS 话题的优秀回答者

这种一看就是 Unicode 问题。普通人请不要在这种问题上胡思乱想,胡思乱想得出的自以为说得通的答案基本都是错的。普通人其实也不需要了解这些,所以如果你看不懂下文写了些什么,不用在意。

两个字分别是 U+F979 和 U+51C9:

  • U+51C9 是常规的汉字字符「凉」,位于 CJK Unified Ideographs 这个 block,主要用于简体中文。

  • U+F979 是位于 CJK Compatibility Ideographs 这个 block 的字符,来自韩国的字符集标准 KS X 1001:1998: http://www.unicode.org/charts/PDF/UF900.pdf

KS X 1001 这个字符集很特别,它把多音字分立为不同的字符(而且很多在汉语里只有一个读音的汉字在韩语里是多音字)。Unicode 为了与其兼容,就把多出的那些多音字字符放到 CJK Compatibility Ideographs 这个 block,并指定这些兼容字符与位于 CJK Unified Ideographs 的字符互为 canonically equivalent(大意为「规范等同」)字符。

作为一对 canonically equivalent 字符,这两个字符的外观原则上应当一致,在各种环境下也应当一视同仁。如果不一样,那么是字体设计不当,或者因为一款字体不支持 U+F979 而 fallback 到另一款字体了。中文、日文字体没有必要支持为韩语提供的 U+F979,Word 之类的简繁转换算法也没有义务支持它。事实上,输入法中也不应当提供它。如果施加了正常化(normalization),U+F979 会转换为 U+51C9,比如汉典的搜索引擎。Unicode 与其他字符集转换时,U+F979 也可能会合并至 U+51C9。

中文、日文环境下应当永远使用 U+51C9。中国大陆取「凉」(U+51C9)为正字,港澳台繁体中文和日文取「涼」(U+6DBC)为正字,它们是异体字关系。所以繁体中文和日文里通常不会用到「凉」,不过一旦用到,也是应当用 U+51C9 而非 U+F979。

– – –

不知道 Unicode 知识怎么办?

请使用专业的 Unicode 字符查看工具。比如,复制字符到 http://rishida.net/tools/conversion/ 这样的工具里,查看它们的 Unicode scalar value(「Unicode U+hex notation」)。

再次强调,描述 Unicode 字符时不要用「编码」,应当使用形如 U+XXXX 的 Unicode scalar value。而且 Unicode scalar value 和编码是两码事。

编辑于 2013-01-20

任天涯

吾爱青椒亦爱吃鸡

”凉“和“凉”这两个字都是读”liang”吗?都是汉字吗?补充说明:在贴吧里看到两个一模一样的id,仔细看才发现这两个字不一样可以看到,中文的双引号括住它们的情况也不一样

@梁海 改变了题目,不过这个题目的确如梁海说的那样,需要对unicode有了解本来把自己的答案删除了,可是想了想我的答案对于原题目还是成立的,至少能给没有那么熟悉unicode的人提供一条如何解决这种问题的路径。“凉”和“凉” 我们不知道unicode知识的时候咋办?我是这么办的。1.目测这两个字的确有微细的差异2.注意两个字京字那一横,后面那一横的三角部分非常小的差一点点,可以确定这是两个字。3.但是我在http://bm.kdd.cc/index.asp网里看它们的内码,居然一样,都是C1B9,难道。。。。然后把这俩字贴到汉典里去,结果得到的字都是unicode码:
U+51C9 那个。

4.不死心,把这俩字贴在word里,像这样

然后点那个简转繁按钮,得到这个图

真相大白

一个能繁简转换,一个不能。所以必须是两个字。

为什么一个能一个不能?

因为第一个字是 U+F979,没有对应的繁体字

而第二字是U+51C9 ,是常用字,有对应的繁体字。

所以word在这里判断正确@yskin 可为什么前面把字粘帖到内码识别的网站还有汉典的时候都视作一个字了呢?

内码的网站看来不对,也没意义。

而汉典出现的情况@庄表伟给出了答案,电脑上没有足够的字库。所以粘帖的字都是U+51C9这个字。

在这里http://www.zdic.net/appendix/f18.htm下载国际标准超大字符集字体支持包5.4(字数:75000个汉字)安装并重启计算机以后,在粘帖两个字到汉典就直接能不同的页面了,见庄表伟的答案。

装了大字库前复制粘帖U+F979这个凉字是转到U+51C9这个页面去的,而安装了字库以后,就完全不一样了,各自转到各自的页面完全没有混淆。

此条目发表在未分类分类目录,贴了标签。将固定链接加入收藏夹。