Shift_JIS, MS932 and Unicode

原创 2004年09月14日 15:25:00

测试环境:Win2K Pro日文版,SUN J2SDK 1.5.0-beta2

经过测试,发现Shift_JIS和MS932编码的全角波浪线(“~”)的编码都是0x8160(16进制,两个字节,高位在前)。通过sun.io.ByteToCharMS932转换后得到Unicode字符'/uFF5E',而通过sun.io.ByteToCharSJIS转换后则得到Unicode字符'/u301C'。

反之,Unicode字符'/uFF5E'通过sun.io.CharToByteMS932转换后会得到MS932编码的本地字符0x8160(16进制,两个字节,高位在前),而Unicode字符'/u301C'通过sun.io.CharToByteSJIS转换后也会得到Shift_JIS编码的本地字符0x8160(16进制,两个字节,高位在前),两者的转换结果相同。

结论:在WinNT/2K/XP上,MS932和Shift_JIS这两种本地字符集完全相同,只是分别采用JDK的sun.io.ByteToCharMS932和sun.io.ByteToCharSJIS对个别特殊的本地字符进行转换后所得到的Unicode字符并不一样。实际上,MS932就是WinNT/2K/XP上的Shift_JIS,只是与标准版的Shift_JIS字符集相比,MS932收录了更多的字符,比如NEC和IBM对Shift_JIS的扩展(如日文中的“㊤㊥㊦㊧㊨①..⑳...”等等);然而,JDK中的ByteToCharSJIS及CharToByteSJIS却使用了标准的Shift_JIS字符集,所以部分扩展字符在从byte转换成char或是从char转换成byte时会出现乱码,这的确是JDK让人非常迷惑的一处。

参考资料1(日文):http://www.asahi-net.or.jp/~ez3k-msym/charsets/jis2ucs.htm

Shift_JIS≒CP932=MS932=Windows-31J

文章来源:http://una.soragoto.net/topics/13.html
  • puma004
  • puma004
  • 2014年08月22日 21:08
  • 1992

ms932判断全角

最近做了一个项目有一个判断的问题 小弟在此让高手们帮忙看下 小弟挥泪谢谢大家了!if (!chkNull(strInput)) {return false;}  byte[] bytes = strI...
  • langmanchangfeng
  • langmanchangfeng
  • 2011年06月29日 10:35
  • 1078

Eclipse显示日文乱码解决方法

不是当前编码的文字的Eclipse中显示会是乱码,解决办法:          project->propertiesresource 修改 text file coding属性,如果Other下拉列...
  • yan8024
  • yan8024
  • 2011年05月03日 20:49
  • 10366

SHIFT-JIS编码范围

想把一个文件中的日文部分提取出来,可是其他的东西都不知道是什么,好在还能查到SHIFT-JIS编码的范围。有个范围怎么着还是能将就是把文字提出来,只是没有格式罢了。转自:http://blog.csd...
  • dongzhiquan
  • dongzhiquan
  • 2009年06月27日 09:57
  • 2277

Shift_JIS_table(unicode)码表

  • 2012年02月17日 19:54
  • 176KB
  • 下载

中日文和UNICODE之间编码的转换

一 GBK Unicode unsigned short GBK2UNI(unsigned short usGBK) {     unsigned char  szEUC[2] = { u...
  • HiRuyue
  • HiRuyue
  • 2013年06月30日 11:59
  • 1256

4.2.3 标准编码

Python内置了很多编码的字符集处理,有些是使用C语言实现,有些是使用字典映射方式实现。下表按名称排序的字符集表,有些名称是可以别的名称的,比如utf-8也可以使用名称utf_8来表查找。CPyth...
  • caimouse
  • caimouse
  • 2015年11月08日 08:40
  • 1789

常用编码:Shift_JIS, GBK,EUCKR,Big5,UTF8,CP1252

(1) Shift_JIS Shift_JIS是一个日本电脑系统常用的编码表。它能容纳全角及半角拉丁字母、平假名、片假名、符号及日语汉字。 它被命名为Shift_JIS的原因,是它在放置全角字符时...
  • hellofeiya
  • hellofeiya
  • 2012年12月27日 09:06
  • 13361

日文Shift_JIS码表

  • 2010年03月12日 10:47
  • 11KB
  • 下载

UTF-8转换成Shift_jis,识别非Shift_jis字符,如(~、①等)

闭月羞花猫 2007/11/27 于南京新城需求描述:       在读取一本UTF-8编码的文本文档,将其中的内容转换成Shift_jis编码,如果遇到       ~、① 之类不属于Shift_j...
  • luyang1016
  • luyang1016
  • 2007年11月27日 19:02
  • 6767
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Shift_JIS, MS932 and Unicode
举报原因:
原因补充:

(最多只允许输入30个字)