有经验的朋友都知道,文字编码实在是让人头疼的问题,不同的软硬件平台,不同的程序语言,不同的版本,对于文字编码的支持都略有不同,名字也容易让人误解。
在JAVA中,对于日语文件来说,可以使用JISAutoDetect 来做检测(无法保证准备,尽量避免使用),但是仅限于ISO2022JP、SJIS、EUC-JP,而UTF8就不可以。下面的开源库,可以支持更多的编码,不过在使用过程中发现还有不足,有时无法正常识别。其实,在Linux环境中NKF确实还是比较值得信赖的,可以使用命令行来简单地识别。
http://code.google.com/p/juniversalchardet/
关于Shift_JIS,有一些细节问题,可以参考下面的链接
http://una.soragoto.net/topics/13.html

再进一步细致地补充一些:
ShiftJIS只是个通称而已,在Windows平台上,微软整合了NEC及IBM编码后,正式登录命名为Windows-31J,具体演变过程可以参考Microsoft CP932
当然,在手机上也有基于ShiftJIS的各个厂商自己的扩充,需要具体分别对待。
另外,电子邮件中使用的是ISO-2022-JP,7bit编码,其实Windows上微软实际上加入了自己的扩充,也就是CP50220,主要应用在OutlookExpress等Mailer,为此Linux阵营定义了ISO-2022-JP-MS,在PHP以及Perl(Encode::ISO2022JPMS,但是好像没有被cpan登录)中都可以使用,当然邮件MIME的charset部分必须为ISO-2022-JP。
进一步,Encode::EUCJPMS是一个更好的选择,当中除了eucJP-ms,还包含了cp51932,cp50220,cp50221。
在MIME::Charset的Source中可以看到如下的内容,也就是说独立出去了
# ['iso-2022-jp-ms','Encode::ISO2022JPMS'],
# ['cp50220', 'Encode::EUCJPMS'],
# ['cp50221', 'Encode::EUCJPMS'],
对于这几种编码,ISO-2022-JP-MSについて有些简单的说明。
最后,即使同样是Unicode,也存在平台的差异,见下图(其中IBM-Unicode为标准Unicode),需要注意。
XML日本語プロファイル 解説
http://www.y-adagio.com/public/standards/tr_xml_jpf/kaisetsu.htm
XML Japanese Profile (Second Edition)
http://www.w3.org/Submission/2005/SUBM-japanese-xml-20050324/
文字コードの墓場
http://siisise.net/charset.html
在JAVA中,对于日语文件来说,可以使用JISAutoDetect 来做检测(无法保证准备,尽量避免使用),但是仅限于ISO2022JP、SJIS、EUC-JP,而UTF8就不可以。下面的开源库,可以支持更多的编码,不过在使用过程中发现还有不足,有时无法正常识别。其实,在Linux环境中NKF确实还是比较值得信赖的,可以使用命令行来简单地识别。
http://code.google.com/p/juniversalchardet/
关于Shift_JIS,有一些细节问题,可以参考下面的链接
http://una.soragoto.net/topics/13.html
再进一步细致地补充一些:
ShiftJIS只是个通称而已,在Windows平台上,微软整合了NEC及IBM编码后,正式登录命名为Windows-31J,具体演变过程可以参考Microsoft CP932
当然,在手机上也有基于ShiftJIS的各个厂商自己的扩充,需要具体分别对待。
另外,电子邮件中使用的是ISO-2022-JP,7bit编码,其实Windows上微软实际上加入了自己的扩充,也就是CP50220,主要应用在OutlookExpress等Mailer,为此Linux阵营定义了ISO-2022-JP-MS,在PHP以及Perl(Encode::ISO2022JPMS,但是好像没有被cpan登录)中都可以使用,当然邮件MIME的charset部分必须为ISO-2022-JP。
进一步,Encode::EUCJPMS是一个更好的选择,当中除了eucJP-ms,还包含了cp51932,cp50220,cp50221。
在MIME::Charset的Source中可以看到如下的内容,也就是说独立出去了
# ['iso-2022-jp-ms','Encode::ISO2022JPMS'],
# ['cp50220', 'Encode::EUCJPMS'],
# ['cp50221', 'Encode::EUCJPMS'],
对于这几种编码,ISO-2022-JP-MSについて有些简单的说明。
最后,即使同样是Unicode,也存在平台的差异,见下图(其中IBM-Unicode为标准Unicode),需要注意。
XML日本語プロファイル 解説
http://www.y-adagio.com/public/standards/tr_xml_jpf/kaisetsu.htm
XML Japanese Profile (Second Edition)
http://www.w3.org/Submission/2005/SUBM-japanese-xml-20050324/
文字コードの墓場
http://siisise.net/charset.html
没有评论:
发表评论