AmazonとSOAP4Rと日本語で遊ぼう
現在、2つの問題点があります。いずれもAWS(Amazonのサーバー)側の障害です。報告済み。
[2003-11-28] 現時点でまだ直ってません。 CVS版では、driver.mandatorycharset = 'utf-8'としておくことで、 このAWSのバグを回避できます。
[2004-05-05] 現時点でもまだ直ってません。
検索キーワード文字列に日本語が入れられない
utf-8文字列を送ると、サーバーでエラーが起こります。
レスポンスに日本語が入ると、入り方が間違ってるせいで文字化けする
こんな感じのレスポンスになります。
HTTP/1.1 200 OK
Date: Sat, 08 Nov 2003 14:46:32 GMT
Server: Stronghold/2.4.2 Apache/1.3.6 C2NetEU/2412 (Unix) mod_throttle/3.1.2 mod_fastcgi/2.2.12
Connection: close
Transfer-Encoding: chunked
Content-Type: text/xml
19fe
<?xml version="1.0" encoding="UTF-8"?>...
HTTPのContent-Typeのcharset指定がありません。HTTPに載せる場合は、XMLの encoding指定は無視され、HTTPのcharset指定に従わないといけません。 HTTPでcharsetが省略されるとus-asciiです。というわけでsoap4rは、 AWSからのレスポンスをus-asciiとして解釈します。結果的に文字化け。
AWSがContent-Type: text/xml; charset=utf-8と返すべきです。
まぁ、適当に作ってある手抜きクライアントだと、utf-8決め打ちになっていたりして、 なんとなく動いているように見えるかもしれません。RESTインタフェイスも同様。 なにが「時代はREST」なんだか。いつまでCES自動判別なんてやってんだ。