匿名質問者

文字列変換のリバースエンジニアリングについての相談です

外部システムからUTF-8で送られてくることを期待している文字列が文字化けしています。
内容を確認すると、UTF-8の文字列がなんらかの変換されておかしなことになっているように思えます。
下記の文字列の組み合わせから、どういった変換がされているかわかりますでしょうか。

■送信される文字列
# 便宜上、タブ区切りとしています。また文字列は「タロウ」です)

期待される文字:
343 202 277 343 203 255 343 202 246

送られてくる文字:
303 243 302 202 302 277 303 243 302 203 302 255 303 243 302 202 302 246

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2015/01/13 17:45:04
匿名質問者

質問者から

匿名質問者2014/12/24 22:00:58

参考)16進数表示

期待される文字:

e3 82 bf e3 83 ad e3 82 a6

送られてくる文字:

c3 a3 c2 82 c2 bf c3 a3 c2 83 c2 ad c3 a3 c2 82 c2 a6

・各文字の前にc2がついている。

・eの場合はc3aに変えられる。

サンプルが少なくて申し訳ありませんがよろしくおねがいいたします!

■補足

元の文字列を別の文字コードで保存していれば、そのなんらかの変換によってUTF-8で出てくることを期待したいのですが、それがどういった変換かわかりません。外部システムの担当者(別ロケーション、別会社)があまり中身を知らないようで、こちらでリモートで原因を突き止めないとクリスマスを乗り越えられない感じです・・・

回答3件)

匿名質問者

質問者から

匿名質問者2014/12/24 17:42:04

質問文を編集しました。詳細はこちら

匿名回答1号 No.1

utf-8変換後の最初のオクテットe3を「Unicodeのコードポイントとみなしてもう一度utf8に変換する」とc3 e3になります。以下同様。なので、送り側でunicode codepoint → utf8変換を重複してかけちゃっているんじゃないでしょうか。

匿名回答2号 No.2

http://www.gcd.org/blog/2009/09/177/

送信側がutf-8で送っているのに、受信側の設定がLatin-1として受け取るようになっているので、それをさらにutf-8に変換して格納しているのが原因です。

http://kgbu.hateblo.jp/entry/20081226/1230259302

ですので、このPerlスクリプトのように「送られてくる文字」をutf-8ファイルとして読み込み、Latin-1に変換して出力すれば、元のutf-8文字列が得られます。


またiconvが入っているなら

iconv -f utf-8 -t latin1 input.txt>output.txt

とすればOKです。

匿名回答3号 No.3

ブログなどのUTF-8のフォームから送信した値を受け取り、Shift-JISに変換してCGIやPHPにリダイレクトするCGIがあります。
フリーソフトなので、ダウンロードし、間に入れると良いかもしれません。
http://www.chama.ne.jp/download/tourlw/index.htm

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません