人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

期待される文字:
343202277343203255343202246

送られてくる文字:
303243302202302277303243302203302255303243302202302246

●質問者: 匿名質問者
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

質問者から

参考)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で出てくることを期待したいのですが、それがどういった変換かわかりません。外部システムの担当者(別ロケーション、別会社)があまり中身を知らないようで、こちらでリモートで原因を突き止めないとクリスマスを乗り越えられない感じです・・・


1 ● 匿名回答1号

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


2 ● 匿名回答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 ● 匿名回答3号

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

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ