• 締切済み

HTMLユニコード(数値文字参照)の復元

10進HTMLユニコードを基のunicodeに変換したいのですが、どなたか、ご存知ないでしょうか。 こちらの環境はWindowxXp Borland C++ Builder6です。 今、「【」から12301を16進化して3010とし、これに無理やり、「\u」と「3010」を結合させてみたのですが、出力表示はu3010と失敗でした。 うまく行けば、「【」となるはずでしたが・・・・・・。 Web検索したところ、APIなどの変換のための関数が見つからないで自作したいと思っています。 宜しくお願いします。

みんなの回答

回答No.4

12304(=0x3010)だったら「【」が出力されますが。 #include <iostream> #include <locale> using namespace std; int main() { wcout.imbue(locale("japanese")); wcout << wchar_t(12304) << endl; }

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.3

>今、「【」から12301を16進化して3010とし、これに無理やり、「\u」と「3010」を結合させてみたのですが、出力表示はu3010と失敗でした。 >うまく行けば、「【」となるはずでしたが・・・・・・。 どのようなコードを書かれたのでしょう? 結果だけ見ると文字列の"\u"と、文字列の"3010"を連結してるだけのように思われるのですが(連結さえすれば自動的に"【"になると思われてるような気がする)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

単に「テキストデータにしたい」なら, (バイト数やバイトオーダーに注意して) バイナリで「12301 という数字」を出力すればいいだけじゃないかな? 16ビットで出力すれば「それなりなバイトオーダーの UTF-16」になるはず. たとえば #include <stdio.h> int main(void) { unsigned int code = 12301; FILE *fp = fopen("paren.txt", "wb"); fputc(code >> 8, fp); fputc(code & 0xff, fp); fclose(fp); return 0; } でビッグエンディアンの UTF-16 になると思う... いや, 12301 だと別の文字か?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

どうなることを期待しているんでしょうか? 「出力表示」とあるからにはどこかに何らかの方法で「出力」したいのだとは思いますが, 「どこに」「いかなる方法で」出力したいんでしょうか?

toshi_yn
質問者

補足

言葉足らずで申しわけないです。 要は、「【」のHTMLユニコードは【となりますが、これをもとの「【」にしたテキストデータとして復元したいのです。ちなみに「【」のUNICODEは\u3010です。 復元したテキストを画面に表示させていたものですから、このような表現になってしまいました。 復元したテキストをテキストデータとして得られれば、OKです。 背景としてはあるWebページのテキストをコピーしたところ、【のようなHTMLユニコードの羅列で テキストとして読めなかったため、復元して読めるようにしたいのです。 復元方法はWebサイトの変換のページで行うのではなく、プログラムとして組んで実現を考えています。 宜しくお願いします。

関連するQ&A