• ベストアンサー

UTF7について

UTF7についてですがマッピングルールなどについて教えていただけないですか? 試しに「あああ」という文字をフリーのソフトでUTF7に変換したところ 2B 4D 45 49 77 51 6A 42 43 という感じでした。2進数でみてもまったく規則性がわかりません。 UNICODE→UTF8はわかるのですが、UNICODE→UTF7に変換するには どうすればいいのでしょうか?

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

UTF-7は、RFC1642という文章で定義されています。 ftp://ftp.isi.edu/in-notes/rfc1642.txt これによると、=は使わずに、0ビットで埋めるとなっています。 ぜひ、RFCの文章を自分で読んで(翻訳サイト等を使ってでも)理解してください。

参考URL:
ftp://ftp.isi.edu/in-notes/rfc1642.txt
sha-girl
質問者

お礼

参考URLありがとうございます。 早速読ませて頂きました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

1.ASCII文字と、半角スペース、TAB、CR、LFは直接エンコード 2.その他のUNICODEはbase64エンコード 3.ASCIIとbase64の切り替えには、+と-を使う 4.+を文字として使うときは、+- となります。 つまり、先頭の2Bは+なので、4D以下はbase64でエンコードされています。 base64は6バイトが8バイトに変換されるので ああああああ を変換してフリーソフトで変換して確認すると、 2B 4D 45 49 77 51 6A 42 43 4D 45 49 77 51 6A 42 43 となり、少しだけ規則性が見えてきます。

sha-girl
質問者

お礼

わかりやすい説明ありがとうございます。 base64について調べ少しUTF7について理解することが できました。 base64では6bit化したとき足りない部分を"="で埋め合わせる ようですが、UTF7でもそのルールは適用されるのでしょうか? 私が試した変換ソフトでは「=」にはならずそのまま0bitとして処理 されていました。 例えば2進数で「11111111 11110000」の場合 base64だと「//0=」ということでいいのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • [perl5.8] utf8で文字出力すると文字化けする

    perl5.8で、テキストをunicode(utf8)で出力したのですが、文字化けします。 ソースは以下のとおりです。 -----ソース----- use open OUT => ":encoding(utf8)"; open(OUT, ">utf8.txt"); print OUT "utf8だよ\n"; close(OUT); ----------------- できたファイルはutf8エンコードなのですが、 エディタで見ると「だよ」が文字化けします。 ちなみにフリーソフトで、SJIS形式の「utf8だよ」が 書かれたファイルをutf8に変換すると、文字化けしません。 フリーソフトで生成したutf8ファイルと、 自作perlで生成したutf8ファイルとを バイナリエディタで読込み比較すると 75746638E381A0E382880D0A (フリーソフト) 75746638C282C2BEC282C3A60D0A (自作perl) という差が出ています。 原因がお分かりになる方、知恵をお貸し願えますか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • UTF-8とUnicodeの互換性

    Windowsで使用されているUnicodeはUTF-16と理解しているのですが、 UTF-16→UTF-8は変換できると思いますが、 UTF-8→UTF-16の変換は一意に変換されるものなのでしょうか? UTF-16は2バイトなので65,535文字が上限になり、 一方UTF-8は1~6バイトで、実質データ部は最大4バイトなので 表現できる文字数が違うので「UTF-8→UTF-16」の完全変換は無理なのでは?と思っています。 ご存知の方すみませんがどうぞご教授ください。

  • UTF-8とASCIIコードにおける互換性について

    UTF-8とASCIIはそのASCIIコードの範囲のおいて 互換性を持ちます。(と、書籍や多種な文献にはそういった記述があります) たとえば【A】という文字をUTF-8で符号化した際は【41】(16進数で) さらにASCIIコードでも【41】という値がAという文字に割り当てられています。 確かに、一件互換しているようにみえますが、UTF-8っていうことは最終的には Unicode上のコードポイントの値・・・つまり0x0041という値に復元?(というのでしょうか)するわけですよね? でそのUnicodeの文字集合上から復元したコードポイントに対応する文字を参照しAという文字をみつけてくると・・・。 これって【A】という文字をUTF-8で符号化した歳のバイト列はASCIIと一致しているけれど 結局Unicodeコードポイントに直した場合【00】という上位バイトが無駄にくっついてきて【0x0041】となり 互換性がなくなるのではとおもったのですが・・・。 これはどういう意味の互換性なのでしょうか? 識者の方ご教授ください。 お願い致します。

  • UTF16のCSVファイルをUTF8に変更する方法

    仕事でUTF16のCSVファイルをUTF8に変換する必要があって調べています。 秀丸やフリーソフトなら可能なのですが、お客さんに極力操作させたくないので、バッチファイルで呼び出せたらいいと考えています。 JAVAを使った、UTF16で読み込んでUTF8で書き出すプログラムというのも思いついたのですが、処理速度が懸念材料です。 上記以外の方法で、文字コード変換を行う方法をご存知でしたら、教えてください。

  • UTF-8とUTF-16について質問です。

    まず、【あ】という文字をUTF-16というエンコーディング方式で バイト配列化すると [0] => 66 [1] => 48 というバイト値が帰ってきます。 これはとりあえずC#で処理を行いました。 Encoding encode = Encoding.GetEncoding("UTF-16"); String value = "あ"; Byte [] byteData = encode.GetBytes(value); それでは【あ】という文字の文字集合のコードポイントは右記となります。【0x3042】 これは、出力された 66、48という数値を16進数に変換すると 66=>42 48=>30 となり、リトルエンディアン環境で 0x4230という16進数であらわされるようです。 この点も不思議なのですが今回知りたいのはUTF-16でエンコーディングされた バイト配列はこのように文字集合のコードポイントに復帰?させることができますよね? ではUTF-8でエンコーディングされた【あ】という文字の バイト配列 [0] => 227 [1] => 129 [2] => 130 というバイト配列を上記のような文字集合のコードポイントの値へ復帰させることは できるのでしょうか? それに伴いUTF-8でつかわれる文字集合もUTF-16と同じコードポイントなのでしょうか? 上記 1.UTF-8でエンコーディングされた文字列をバイト配列にした場合 元の文字集合に戻せるのか?戻せるならばその戻し方は? 2.UTF-8がさす文字集合とUTF-16がさす文字集合はおなじものですよね? 上記二点よろしくご教授ください。

  • UTF-8から1文字ずつ変換するには?

    アクセスログのリンク元に含まれる検索キーワードがUTF-8の場合に、SJISに変換できないことがあります。 アクセスログはURLエンコードされたまま記録して、表示するときにデコードしてからJcode.pmでSJISに変換しています。時々変な文字になることがあるので、ログファイルのURLエンコードされた文字を取り出して順番を入れ替えてデコード、変換するとうまくいきます。 たとえば、 %E3%81%8D%E3%81%AE%E3%81%93%E7%8B%A9 は「きのこ狩」ですがうまく変換できません。これを %E3%81%AE%E3%81%8D%E7%8B%A9%E3%81%93と並べ替えると「のき狩こ」と変換されます。(1234を2143に並べ替え)へんてこだけど意味は分かるようになります。 文字の組合せによっておかしなことになるようなので、1文字ずつ(3バイト?)変換すれば確実だと思うのですが、やり方がわかりません。 ということで、そもそもこういう方法しかないのか、もしそうならどうやればいいのか教えてください。 URLエンコードされた部分だけ取り出せれば、%でsplitして再度%を付けてから9文字(3バイト分?)ずつ変換すればいいのかなと思うのですが…。

  • UTF-8で5~6バイトになる文字コード

    UnicodeのUTF-8で5~6バイトになる文字コードは、どのような場合でしょうか。(サロゲートペアのコードでも4バイトです。シフトJISから変換するとき、どのようなコードが5~6バイトに割り当てられるのでしょうか。) ご存知の方おられましたら、ご教示ください。

  • UTF8からUnicode(コードポイント)へ変換

    UTF-8の文字コードをUnicode(コードポイント)へ変換させたいのですが、参考URLの情報のように計算式を知りたいです 。 例えば下の「あ」は、16進では「E38182」、10進では「14909826」ですが、どちらかの値を利用してUnicodeのポイントコード「12354」を計算式を用いて求めたいです。 「あ」 Unicode = 12354 16進 = E38182 10進 = 14909826 参考 http://questionbox.jp.msn.com/qa500194.html

  • UTF-8のコード表について

    UTF-8のコード表の中に「Ͱ」、「ͱ」、「Ͳ」、「ͳ」といったように行列式のような文字がたくさんあるのですが、これらの用途は何でしょうか? どうやら文字コードの16進数を示している所まではわかるのですが・・・ わざわざ入れなくとも不使用、未使用にしてしまえばいいのにと感じます。 現在、 http://ja.wikipedia.org/wiki/UTF-8%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%80%E8%A6%A7_0000-0FFF を参照しています。 回答よろしくお願いします。

  • Unicode「utf-8」で作られたHPの雛形サンプルを加工して使い

    Unicode「utf-8」で作られたHPの雛形サンプルを加工して使いたいのですが、HP制作ソフト(Homepage manager やHTML Project2 いずれもフリーソフト)で その雛形ファイルを開くと、文字化けしてしまいます。何か対処する方法はありますでしょうか? 作業環境はWIndows XPです。