パスワードを忘れた? アカウント作成
6401972 journal
日記

uhyorinの日記: Unicodeの円記号問題に引っかかってる 7

日記 by uhyorin

他OSで入力されたであろう、半角"\"のコードは U+0045U+00A5。
これをWindowsのテキストエディタで参照すると"\"と表示されない。
Windowsでの"\"は U+005C とされているが、U+0045U+00A5 のXMLファイルを読み込ませたら半角文字ではないのでエラーとして扱われた。
さて、この場合はどれが問題になるのだろう。

  1. XMLを読み込んでバリデーションチェックを行う、Windows版Java5のライブラリの問題。
  2. Windowsが U+0045U+00A5 を U+005C に内部変換してない気がする問題。
  3. 送信元が相手先環境はWindowsであることを配慮して、U+0045U+00A5 は U+005C に変換してファイル生成してくれない問題。

考えるだけで混乱してきた。
Wikipediaの円記号『Unicodeにおける問題点(円記号問題)』や、yasuoka氏の日記『YEN-SIGN問題縁起』を読んで納得はしたのだが…。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2012年09月20日 16時08分 (#2235563)

    いまだに「半角文字」とか言ってる奴の根本的な知識の欠如。

  • by Anonymous Coward on 2012年09月20日 19時09分 (#2235746)

    最も近いのは3なのでしょうが、「U+00A5 は U+005C に変換して」ではなく「最初からU+005Cとして」データを生成すると表現するべきと思います。

    #バックスラッシュと円記号は別々の記号なんだよ。わけあってWindowsに付属するフォントではU+005C(バックスラッシュ)が円記号に「見える」デザインになっているだけ、とでも思えばいい。(\ (U+5C)を見て)「これはバックスラッシュ」と念じる。
    #キーボードから¥を叩くときには、自分が打とうとしているのがバックスラッシュなのか円記号なのか意識しないといけない。前者ならU+5Cが入力されないといけないし、後者ならU+A5またはU+FFE5が入力されないといけない。

    • そもそもU+00A5が来ること自体が変ですね。U+00A5 は「円記号」以外の何者でもないので、
      入力者は「円記号」として入力しているわけです。それをバックスラッシュとして扱おうと
      してはいけません;-)
      最初からバックスラッシュである U+005C としてデータをもらわないといけないですね。

      たぶん、紙媒体に書かれた円記号を Mac/Linux 環境で手入力したのだと思いますが、
      その場合は「円記号じゃなくてバックスラッシュとみなして入力して」とお願いすればいいと思います。

      つまり、問題なのはバックスラッシュを円記号として印刷している紙媒体ですし、そういう記号をパス区切りに使っているWindowsが悪い;-)

      親コメント
  • by Anonymous Coward on 2012年09月20日 19時44分 (#2235773)

    > これをWindowsのテキストエディタで参照すると"\"と表示されない。

    違うエンコーディングで開いている?

typodupeerror

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

読み込み中...