» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


 17 12
发新话题
打印

[电脑] 好奇问个事,日本人怎么解决PC的汉字问题的?

这档子历史完全不知道,白学计算机十年了,谢谢扫盲!


TOP

ZT
日文编码简史

2010-05-25 15:03
我们在项目开发过程中经常会碰到如下几个名词" EUC编码 ", " EUC_JP编码 ", " EUC U90 ", " EUC S90 ", " Shift_JIS"等等,那么这些名字表示的编码表示什么含义呢,本文旨在讲述日文编码的发展,以及解释以上各个日文编码名词的真正含义,相信对你的日常开发会有帮助。
负责日本文字编码工作的两大机构     众所周知,在计算机上只能存储二进制的数字0,1,而在日常生活中用来交流的文字(例如:英文字母 A ),在计算机中是无法存储的,为了解决文字在计算机上的存储问题,我们必须对文字进行数值化,也就是传说中的“ 编码 ”。例如在ASCII编码体系中英文字符'A '的码值为“ 0x41 ”,所以如果运用ASII编码,' A '存储在计算机中就是' 1000001 '。
     然而很多东方国家的文字比较庞大,不像英文字符,大小写总共就52个字母,对其编码是很简单的。日本文字假名叫常用汉字就有几千个,如何对日本文字进行编码,这确实是一个 体力智力 并存的工作。很显然,你要想对日文进行编码,首先你要做的就是你得知道日本有多少个文字(平假片假名)呢?这个问题恐怕不是一般人能够回答的。所以在这个世界上有两个组织机构来做这个工作,这就是传说中的 ISO日本国标(JIS: Japan Industry Standard) .这两个组织负责收集所有日本语种所要到的文字,然后对其进行编码工作。

ISO-2022-JP的日文编码     ISO 2022,全称ISO/IEC 2022,由国际标准化组织(ISO)及国际电工委员会(IEC)联合制定,是一个使用7位编码表示汉语文字、日语文字或朝鲜文字的方法。 ISO 2022等同于欧洲标准组织(ECMA)的ECMA-35、中国国标GB 2311、日本工业规格JIS X 0202(旧称JIS C 6228)及韩国工业规格KS X 1004(旧称KS C 5620)。具体可参考:http://zh.wikipedia.org/w/index.php?title=ISO/IEC_2022&;variant=zh-cn。
     关于这些编码的详细内容可以参考如下的RFC文档:
http://tools.ietf.org/html/rfc2237
RFC 1468, ISO-2022-JP的规格
RFC 2237, ISO-2022-JP-1的规格
RFC 1554, ISO-2022-JP-2的规格
以上编码体系在我们的Symfoware中用的不是很多

日本国标(JIS)的日文编码     JIS (Japanese Industry Standard),(http://www.jsa.or.jp) 日本工业标准协会。和中国的GB一样,是制定日本国内各种标准的组织,这个组织也复杂对日本文字进行编码,以用来进行信息交换。 JIS编码是8位编码类似于ISO/IEC-8859,JIS编码方案经历的如下几个版本的变更:
JIS X 0201 (JIS C 6220) (具体请参考http://zh.wikipedia.org/w/index.php?title=JIS_X_0201&;variant=zh-cn)
……
JIS X 0208 (具体请参考http://www.gaoshukai.com/20/06/0009/)
……
JIS X 0213 (2000年)
JIS 2004是对JIS X 0213的修正 (具体请参考:http://www.asahi-net.or.jp/~ax2s-kmtn/ref/jisx0213/index.html)
     大体上来说,从JIS X 0201到JIS X 0213,每次版本的演进,都会加入新的日文汉字,具体如下:
  • JIS X 0201 半角英数字、カナ (半角記号、半角英数字、半角カタカナ)(1バイト、2の8乗=256種類)
  • JIS X 0208 JIS基本漢字 (全角記号、全角ひらがな、全角かたかな、漢字など)(2バイト、2の16乗=65536種類)
  • JIS X 0212 JIS補助漢字 (使用頻度の低い漢字5,801字、非漢字266字、計6,067字)
  • JIS X 0213 JIS拡張漢字 (第3水準の1,908字、第4水準の漢字2,436字、計4,344字(うち、漢字は3,685字))


其它软件厂商的日本编码的实现Miscrosoft 对日文的支持     MicroSoft要想对日文进行编码,首先要知道日文有多少文字,正如前面所说的,这是个很难回答的问题,而且微软也没有必要去做这件事情,因为这个事情JIS和ISO已经做了。微软Windows操作系统上的日文编码没有直接使用ISO或者JIS的编码系统,而是为了适应其操作系统的特点,参考了JIS标准,自己开发了一套编码系统。这就是我们平时所讲的 Shift_JIS 或是 SJIS .关于这个编码系统的详细内容请参考:http://www.microsoft.com/globaldev/reference/dbcs/932.mspx.
     既然我们已经说了, Shift_JIS 编码系统是参考了 JIS 编码系统,那么这两个编码之间的关系是什么呢?具体如下所示:
  • 以下字符在Shift_JIS使用一个字节来表示。
ASCII字符 (0x20-0x7E),但“\”被“¥”取代
ASCII控制字符 (0x00-0x1F、0x7F)
JIS X 0201标准内的半角标点及片假名(0xA1-0xDF)
在部分操作系统中,0xA0用来放置“不换行空格”。
  • 以下字符在Shift_JIS使用两个字节来表示。
JIS X 0208字集的所有字符
“第一位字节”使用0x81-0x9F、0xE0-0xEF (共47个)
“第二位字节”使用0x40-0x7E、0x80-0xFC (共188个)
使用者定义区
“第一位字节”使用0xF0-0xFC (共47个)
“第二位字节”使用0x40-0x7E、0x80-0xFC (共188个)
在Shift_JIS编码表中,并未使用0xFD、0xFE及0xFF。

Unix系操作系统对日文的支持Unix系操作系统下的日文编码也没有直接采用ISO和JIS的标准,它也创建了另一个编码系统EUC (又称为UJIS)。
为了说明EUC, EUC-JP, EUC-U90和EUC-S90之间的关系,我引用了如下一段关于这些编码( 注意: 下面的EUC-JP就是指U90, EUC-JISX0213就是指S90)的定义的英文资料:
  • Traditional one contains ASCII or JIS X 0201:1976/1997 left half (Japanese JIS Roman), JIS X 0208-1983 or JIS X 0208:1990/1997 (Japanese), JIS X 0201:1976/1997 right half (Japanese Katakana) and JIS X 0212:1990 (Japanese Supplement). This uses EUC-JP as preferred MIME name.
  • After definition of JIS X 0213:2000, a brother was borned. It contains ASCII or JIS X 0201:1976/1997 left half (Japanese JIS Roman), JIS X 0213:2000 plane 1 and 2 (Japanese), JIS X 0201:1976/1997 right half (Japanese Katakana) and JIS X 0212:1990 (Japanese Supplement). This is called EUC-JISX0213 as preferred MIME name.

Unicode编码系统下的日文编码Unicode就是为了解决统一的全球符号的编码问题,关于Unicode编码系统下日本的文字的编码,可以参考:http://www.unicode.org/charts/ .这里不作详细阐述。



[ 本帖最后由 z0406 于 2010-6-27 01:49 编辑 ]



TOP

 17 12
发新话题
     
官方公众号及微博