• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「数値文字参照への変換するソース」が知りたい)

数値文字参照への変換するソース

このQ&Aのポイント
  • X-Smilesを用いてXFormsとは関係のないソースを読み込ませたところ、UTF-8で書かれた日本語がISO-8859-1で読み込まれてしまいました。
  • XFormsで送られてきたデータをperlのcgiに送った際にエラーが発生しました。URLデコードを試みた結果、Invalid byte 1 of 1-byte UTF-8 sequenceというエラーが出ました。
  • 数値文字参照に変換するためのソースを探しています。自力で変換する必要があるかもしれません。

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

  • ベストアンサー
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.1

$inline = 'あいうえお'; #UTF-8 @chars = (); $outline = ""; (@chars) = ($inline =~ m/([\x01-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf][\x80-\xbf])/xg); foreach $char (@chars) { if(length($char) == 1){ $outline .= $char; }elsif(length($char) == 2){ $unival = (vec($char, 0, 8) & 0x1f) * 0x40 + (vec($char, 1, 8) & 0x3f); $outline .= "\&#$unival;"; }elsif(length($char) == 3){ $unival = (vec($char, 0, 8) & 0x0f) * 0x1000 + (vec($char, 1, 8) & 0x3f) * 0x40 + (vec($char, 2, 8) & 0x3f); $outline .= "\&#$unival;"; } } print $outline; #結果:あいうえお

その他の回答 (1)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.2

あり、ここって数値文字参照を文字に変換しちゃうのか・・・。 「結果:あいうえお」になっちゃってますが実際には あいうえお が返ってきます。(&は半角)

himajin2005_RC4
質問者

お礼

ご回答ありがとうございます。 うーん、数値文字参照自体はうまく動くのですが それでもX-Smilesには表示されません XFormsを使うのはMozillaにある程度実装されてからにします。

関連するQ&A