アプリ版:「スタンプのみでお礼する」機能のリリースについて

<?xml version="1.0" encoding="UTF-8" ?>
<root>
<data>あ~お</data>
</root>

というようなXMLをXML::Simpleでparseし、

use Encode;
$data = encode("sjis", $xmldata);

のようにsjisにエンコードしてhtmlで表示させたところ、
「あ~お」の「~」のところが「?」になってしまいます。
これを「あ~お」と表示するにはどうしたらよいでしょうか。
表示する方のHTMLのコードはShift_JISでなければなりません。

アドバイスのほど、よろしくお願いいたします。

A 回答 (1件)

詳しいことは、ちょっと思い出せないのですが・・



これはUnicodeの悪いところで・・「~」に当てられてる文字は、実は二つあるのです。フォントを変えたり、拡大したりして、よく確認してみてください。「~」の右端がちょっと折れ曲がっている文字と、左右対称な文字と、二つあると思います。実際には・・Encodeで、sjisの「~」をUTF-8に変換してみるとわかります。

おそらく、右端が曲がってる方が、間違ったマッピングだと思うのですが・・encodeする前に、sjis互換の「~」に置換してやるといいと思います。
    • good
    • 0
この回答へのお礼

アドバイスをいただき、あれこれ試してみたのですが、encode関数はYAMAMAYA様のおっしゃる『「~」の右端がちょっと折れ曲がっている文字』の方を「~」に変換しているようです。ややこしい・・。

ですので、UTF8の状態で「~」を『「~」の右端がちょっと折れ曲がっている文字』に置換してから、encodeするようにしたら「?」にならず「~」になりました。

ありがとうございました。

お礼日時:2005/07/27 23:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!