波ダッシュ・全角チルダ問題

目次

波ダッシュ・全角チルダ問題

シフトJISの「~」の文字を Unicode と相互変換する場合に処理系によって 波ダッシュ(U+301C) だったり 全角チルダ(U+FF5E) だったりなど混乱が生じている問題です。

文字 波ダッシュ 全角チルダ
表示
名前 WAVE DASH FULLWIDTH TILDE
Unicode U+301C U+FF5E
JIS X 02081-33 (なし)
JIS X 02131-33 1-2-18
UTF-8 0xE3 0x80 0x9C0xEF 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

サマリ