「
同僚が Amazon Web サービスを呼び出すコードを作成中」の投稿を先に書いたが、今度は、Amazon Web サービスから返ってくる検索結果の日本語がヘン、とのこと。
たしかに、呼び出しを行っている C# コード上では、日本語が文字化けしている。
Web サービス呼び出しは WCF を使っているということで、app.config の構成で文字エンコード方式の指定が間違っているんじゃないの? と思いつつ確認したが、ちゃんと utf-8 が指定されていた。
Amazon Web サービスから返された結果XMLを見てみたかったが、WCF の basicHttpBinding で生のXMLレスポンスをどうやって見ることができるのか、WCF はまだ満足に使ったことがなく勝手がわからずに挫折。
かわりにパケットキャプチャでキャプチャしてみた。
すると、日本語文字1文字につき6バイトという、見たことのない不思議なエンコーディングで返ってきていた。
Amazon Web サービスなんて、世の皆さん、普通にたくさん使ってらっしゃるだろうにナゼ? と思いつつ、あちこち Web サイトを検索。
すると、2004年当時の投稿だが、下記ブログを発見。
ready for the blue - Amazon Web Servicesに変更あり
なるほど、現構成では "http://soap.amazon.
com/onca/soap3" にリクエスト投げていたが、locale=jp でリクエスト送信するなら、"http://soap.amazon.
co.jp/onca/soap3" に送るべし、ということらしい。
いそいそと app.config を書き直して実行してみたところ、今度はちゃんと日本語文字も正しくutf-8 でデコードされて返ってくるようになった。
それにしても、1文字6バイトのエンコード方式って何なのだろうか?