シフトJISの「~」の文字を Unicode と相互変換する場合に処理系によって 波ダッシュ(U+301C) だったり 全角チルダ(U+FF5E) だったりなど混乱が生じている問題です。
文字 | 波ダッシュ | 全角チルダ |
---|---|---|
表示 | 〜 | ~ |
名前 | WAVE DASH | FULLWIDTH TILDE |
Unicode | U+301C | U+FF5E |
JIS X 0208 | 1-33 | (なし) |
JIS X 0213 | 1-33 | 1-2-18 |
UTF-8 | 0xE3 0x80 0x9C | 0xEF 0xBD 0x9E |
Shift_JIS(JIS X 0208) | 0x81 0x60 | (なし) |
Shift_JIS(JIS X 0213) | 0x81 0x60 | 0x81 0xB0 |
CP932 | (なし) | 0x81 0x60 |
Windows(CP932) U+301C ⇒ ERROR / U+FF5E ⇒ 0x81 0x60 / 0x81 0x60 ⇒ U+FF5E Mac U+301C ⇒ 0x81 0x60 / U+FF5E ⇒ ERROR / 0x81 0x60 ⇒ U+FF5E iconv(Shift_JIS) U+301C ⇒ 0x81 0x60 / U+FF5E ⇒ ERROR / 0x81 0x60 ⇒ U+301C / 0x81 0xB0 ⇒ ERROR iconv(Shift_JISX2013) U+301C ⇒ 0x81 0x60 / U+FF5E ⇒ 0x81 0xB0 / 0x81 0x60 ⇒ U+301C / 0x81 0xB0 ⇒ U+FF5E iconv(CP932) U+301C ⇒ 0x81 0x60 / U+FF5E ⇒ 0x81 0x60 / 0x81 0x60 ⇒ U+FF5E / 0x81 0xB0 ⇒ ERROR Oracle(JA16SJIS) U+301C ⇒ 0x81 0x60 / U+FF5E ⇒ 0x81 0x60 / 0x81 0x60 ⇒ U+301C Oracle(JA16SJISTILDE) U+301C ⇒ 0x81 0x60 / U+FF5E ⇒ 0x81 0x60 / 0x81 0x60 ⇒ U+FF5E Ruby(Shift_JIS) U+301C ⇒ 0x81 0x60 / U+FF5E ⇒ ERROR / 0x81 0x60 ⇒ U+301C Ruby(CP932) U+301C ⇒ ERROR / U+FF5E ⇒ 0x81 0x60 / 0x81 0x60 ⇒ U+FF5E Python(Shift_JIS) U+301C ⇒ 0x81 0x60 / U+FF5E ⇒ ERROR / 0x81 0x60 ⇒ U+301C Python(CP932) U+301C ⇒ 0x81 0x60 / U+FF5E ⇒ 0x81 0x60 / 0x81 0x60 ⇒ U+FF5E
半角文字の 0x5C が環境によって バックスラッシュ(\) だったり 円マーク(¥) だったりなど混乱が生じている問題です。
文字 | バックスラッシュ | 円マーク |
---|---|---|
表示 | \ | ¥ |
名前 | REVERSE SOLIDUS | YEN SIGN |
Unicode | U+005C | U+00A5 |
JIS X 0201 | (なし) | 0-92 ※1 |
UTF-8 | 0x5C | 0xC2 0xA5 |
Shift_JIS | (なし) | 0x5C |
\ ... Courier New \ ... Times New Roman \ ... Consolas \ ... MS ゴシック \ ... メイリオ \ ... 游ゴシック
Windows(CP932) 0x5C ⇒ U+005C / U+005C ⇒ 0x5C / U+00A5 ⇒ ERROR iconv(Shift_JIS) 0x5C ⇒ U+00A5 / U+005C ⇒ 0x5C / U+00A5 ⇒ 0x5C iconv(CP932) 0x5C ⇒ U+005C / U+005C ⇒ 0x5C / U+00A5 ⇒ 0x5C Ruby(Shift_JIS) 0x5C ⇒ U+005C / U+005C ⇒ 0x5C / U+00A5 ⇒ ERROR Ruby(CP932) 0x5C ⇒ U+005C / U+005C ⇒ 0x5C / U+00A5 ⇒ ERROR Python(Shift_JIS) 0x5C ⇒ U+005C / U+005C ⇒ 0x5C / U+00A5 ⇒ 0x5C Python(CP932) 0x5C ⇒ U+005C / U+005C ⇒ 0x5C / U+00A5 ⇒ ERROR
半角文字の 0x7E が環境によって チルダ(~) だったり オーバーライン(‾) だったりなど混乱が生じている問題です。
文字 | チルダ | オーバーライン |
---|---|---|
表示 | ~ | ‾ |
名前 | TILDE | OVERLINE |
Unicode | U+007E | U+203E |
JIS X 0201 | (なし) | 0-126 |
UTF-8 | 0x7E | 0xE2 0x80 0xBE |
Shift_JIS | (なし) | 0x7E |
Windows(CP932) 0x7E ⇒ U+007E / U+007E ⇒ 0x7E / U+203E ⇒ ERROR iconv(Shift_JIS) 0x7E ⇒ U+203E / U+007E ⇒ 0x7E / U+203E ⇒ 0x7E iconv(CP932) 0x7E ⇒ U+007E / U+007E ⇒ 0x7E / U+203E ⇒ 0x7E Ruby(Shift_JIS) 0x7E ⇒ U+007E / U+007E ⇒ 0x7E / U+203E ⇒ ERROR Ruby(CP932) 0x7E ⇒ U+007E / U+007E ⇒ 0x7E / U+203E ⇒ ERROR Python(Shift_JIS) 0x7E ⇒ U+007E / U+007E ⇒ 0x7E / U+203E ⇒ 0x7E Python(CP932) 0x7E ⇒ U+007E / U+007E ⇒ 0x7E / U+203E ⇒ ERROR