• ベストアンサー

xml中の円記号について

libxml2で <?xml version="1.0" encoding="shift_jis"?> <project>   <path>C:\</path> <project> というXMLファイルをパースしたところ、 project/pathのcontentが文字化けしてしまいます。 バイトコードとしては 0x43 0x3a 0xc2 0xa5 という感じで円記号が悪さをしているようです。 なぜ文字化けするのか、 また回避する手段を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

ShiftJISにおいて、半角の円マークをバックスラッシュの意味と円マークの意味の両方で使っているためです。 円マークは、Unicodeでは U+005CではなくU+00A5にマッピングされているので それがUTF-8表現で 0xC2 xA5 のようになっているのですが、 もはやこれはパスの区切り文字とは何の関係もないものなので (バックスラッシュは U+005Cなので 0x5Cとなる)、 その文字を含む文字列をパスを表すものとして解釈するプログラムが文句を言っているわけです。 libxml2 で受け付けるのかわかりませんが、encoding に Windows31-J とかはつかえませんか? あとはどうにかして円マークを使わないような表現にするとか(可能ならば)。

関連するQ&A