2013年09月24日
このエントリーをはてなブックマークに追加
※僕はプログラムを書かないですし、よくわからないのでアタリをつけたというメモになります。
まずプログラムの概要から。

GETでデータを受け取ります。
その後処理を行って違うPHPに移動します。このときは Location を利用しています。
そして帰ってくる結果が文字化けしているのです。

Windows サーバーで動作しているときは、文字化けなどせず、問題無く動作していました。しかし今回ReverseProxy環境にして、途中に Linux が絡むと文字化けしてしまうのです。

エンコードなどは、すべて shift-jis で行われており、プログラム上の不備は無いように思えます。

linux で tcpdump を取得したときは以下のようになっていました。

■最初のGET
GET /url-path/?postdata=[エンコード文字列]

■Location での移動
Content-Type: text/html; charset=UTF-8
Location: http://[url]/index.php?postdata=[エンコード文字列]
Server: Microsoft-IIS/8.0
X-Powered-By: PHP/5.2.5
Date: Mon, 23 Sep 2013 07:37:06 GMT
Connection: close
Content-Length: 834


ここで、最初のGETの時には、shift-jis でエンコードされているようです。実際にエンコード文字列をデコードするのも問題ありません。
しかし次の location の時は、charset=UTF-8 となっています。このため、エンコード文字列として渡されている値は shift-jis のため、整合性がとれず文字化けの原因になっているのでは無いかと思いました。。

※このcharset=UTF-8は無指定の場合のデフォルトのような気がします。(もちろんプログラムでの指定ミスかもしれません)
よく分からないのですが、このあたりが怪しいという感じでした。


stock_value at 09:54│Comments(0)TrackBack(0)技術:2013年 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔