• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サロゲートペアの文字コード→文字変換)

Windows上でのサロゲートペア文字コード→文字変換方法について

このQ&Aのポイント
  • Windows上でRubyを使ってサロゲートペアの文字コードを文字に変換する方法を教えてください。
  • JavaScriptではString.fromCharCode()を使用し、上位サロゲートと下位サロゲートを指定することで文字を得ることができます。
  • Windows XP上で、文字コードの書かれたファイルを読み込んで文字を出力する方法を確認したいです。

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

  • ベストアンサー
  • asnuna
  • ベストアンサー率100% (2/2)
回答No.1

Ruby1.9以降であれば、文字列リテラルでUnicodeエスケープを使うか、pack して force_encoding すればできます。 例えば U+29E3D のホッケはサロゲートペアで表すと D8 67 + DE 3D なので、 s = "\u{d867}\u{de3d}" puts s とすれば出力できます。 あるいは、バイトデータからですと、 a = 0b111011011010000110100111 b = 0b111011011011100010111101 s2 = [a, b].map{|i| [i.to_s(2)].pack("B*").force_encoding("utf-8") }.join puts s2 です。 この場合はto_s(2)で2進数表現にしているのでB*でpackしてます。

param08
質問者

お礼

Ruby1.9はワンクリック・インストーラーがなくて、前回インストールしようとしてよくわからなかったので躊躇していたのですが、結局Ruby1.9.1を入れたらすんなりうまく行きました。 簡潔で適切なお答え、ありがとうございました。 大変助かりました。

param08
質問者

補足

早速の回答ありがとうございます。 でもすみません、書き忘れていましたがRubyのバージョンは1.8.6なんです。 1.8.6の場合はどのようにすればいいのでしょうか? ご存じでしたら教えてください。

関連するQ&A