查阅了四个地方对 ujis/eucjp-ms 的描述,得到如下不同说法的比较:
byte range | mysql ctype-ujis.cc#L33162 comment |
mysql ctype-eucjpms.cc#L36410 comment |
EUCJP(来自wikipedia) | EUCJP亚种 - eucJP-ms (来自wikipedia) |
---|---|---|---|---|
[00..7F] |
ASCII [U+0000..U+007F] | ASCII/JIS-Roman(one-byte/character) | ASCII | ASCII |
[8E][A1..DF] |
JIS-X-0201 Katakana [U+FF61..U+FF9F] | half-width katakana(two bytes/char) | 半角片假名 (JIS X 0201) | 半角片假名 (JIS X 0201) |
[A1..FE][A1..FE] |
JIS-X-0208 | JIS X 0208:1997(two bytes/char) | JIS X 0208 | JIS X 0208字符集合之外还有: * [AD][A1..FE] NEC特殊文字 1面13区 * [F5..FE][A1..FE] 用户自定义文字(前半) 1面85区 - 94区 |
[8F][A1-FE][A1-FE] |
JIS-X-0212 | JIS X 0212-1990(three bytes/char) | JIS(JIS辅助汉字集合) (JIS X 0212) | JIS辅助汉字集合 (JIS X 0212)之外还有: * [8F][F3..F4][A1..FE] IBM扩展字符(JIS X 0212 以外) 2面83区 - 84区 * [8F][F5..FE][A1..FE] 用户自定义字符(后部分) 2面85区 - 94区 |
可见, 无论 ujis 还是 eucjp-ms , 都是包含下面几种字符
- 单字节ASCII
- 范围
[00..7F]
- 范围
- 双字节字符
- 半角片假名 (JIS X 0201)
-
范围
[8E][A1..DF]
(只有 63 个字符) -
其中第一字节固定为
8F
, 第二个字节的文字集合如下:JIS X 0201 char code table
eucjp code harf-width katakana (utf8) 0x8EA1 。 0x8EA2 「 0x8EA3 」 0x8EA4 、 0x8EA5 ・ 0x8EA6 ヲ 0x8EA7 ァ 0x8EA8 ィ 0x8EA9 ゥ 0x8EAA ェ 0x8EAB ォ 0x8EAC ャ 0x8EAD ュ 0x8EAE ョ 0x8EAF ッ 0x8EB0 ー 0x8EB1 ア 0x8EB2 イ 0x8EB3 ウ 0x8EB4 エ 0x8EB5 オ 0x8EB6 カ 0x8EB7 キ 0x8EB8 ク 0x8EB9 ケ 0x8EBA コ 0x8EBB サ 0x8EBC シ 0x8EBD ス 0x8EBE セ 0x8EBF ソ 0x8EC0 タ 0x8EC1 チ 0x8EC2 ツ 0x8EC3 テ 0x8EC4 ト 0x8EC5 ナ 0x8EC6 ニ 0x8EC7 ヌ 0x8EC8 ネ 0x8EC9 ノ 0x8ECA ハ 0x8ECB ヒ 0x8ECC フ 0x8ECD ヘ 0x8ECE ホ 0x8ECF マ 0x8ED0 ミ 0x8ED1 ム 0x8ED2 メ 0x8ED3 モ 0x8ED4 ヤ 0x8ED5 ユ 0x8ED6 ヨ 0x8ED7 ラ 0x8ED8 リ 0x8ED9 ル 0x8EDA レ 0x8EDB ロ 0x8EDC ワ 0x8EDD ン 0x8EDE ゙ 0x8EDF ゚
-
- JIS X 0208文字区域
- 范围
[A1..FE][A1..FE]
- 对于 EUCJP 来说, 包含了 JIS X 0208 标准内规定的字符
- 对于 EUCJP-ms 来说, 不仅包含了 JIS X 0208 标准内规定的字符,还包含了:
[AD][A1..FE]
NEC特殊字符(1面13区)[F5..FE][A1..FE]
用户自定义字符(前半部分) (1面85区 - 94区)
- 范围
- 半角片假名 (JIS X 0201)
- 三字节字符
- 范围
[8F][A1-FE][A1-FE]
(也就是首字节为 8F, 后面的两个字节值范围跟上面JIS X 0208文字区域
相同) - 对于 EUCJP 来说, 包含了 JIS X 0212 标准内规定的字符
- 对于 EUCJP-ms 来说, 不仅包含了 JIS X 0208 标准内规定的字符,还包含了:
[8F][F3..F4][A1..FE]
IBM扩展字符(JIS X 0212 以外) (2面83区 - 84区)[8F][F5..FE][A1..FE]
用户自定义字符(后半部分)(2面85区 - 94区)
- 范围
- EUCJP/EUCJP-ms 的字节合法范围只包含表中列举的四种情况
- EUCJP-ms 是对 EUCJP 的合理扩展, 使用了一些 EUCJP 里面未定义区域来定义了一些扩展字符
- ASCII : 参考ASCII标准即可
- JISX0201 半角片假名: 网上没太多合适的字符表, 可以参考上面我列出的
JIS X 0201 char code table
- JIS-X-0208 : 可以参考这个字符表
- JIS-X-0212 : 可以参考这个字符表
- 上面两个网页都是utf8的, 可以通过
EUC
列知道 EUCJP 的16进制编码, 截取表中utf8作为测试
- 上面两个网页都是utf8的, 可以通过
- 以上是我们基于一些公开资料的提炼, 是否正确还需要验证
- 关于 mysql 的 eucjp/eucjp-ms 的具体区别, 我们正在咨询mysql官方。
- 关于
NEC特殊字符
/IBM扩展字符
/用户自定义字符
区域的 【EUCJP编码和文字映射表】, 还没找到公开资料, 准备稍后具体研究 - 我打算验证上面 JIS-X-0208 / JIS-X-0212 两个字符表的正确性, 并导入mysql去实际验证