Apache XML-RPCは入力エンコーディングをプラットフォームデフォルトにしやがる
XML-RPCを使っている。ところが日本語を含む文字列が化ける。サーバではUTF-8に変換してるし,httpヘッダも正しい。受信した生データを調べてもちゃんとUTF-8になっている。
ソースを追いかけてみると,Apache XML-RPCはエンコーディングをプラットフォームデフォルトと決め打ちにしている。これだとWindows上ではUTF-8のバイト列をMS932のバイト列と思い込んでUnicodeに変換してしまう。うがー。
これを回避するには以下のようにする。
XmlRpc.setDefaultInputEncoding("UTF8");
アメリカで使っているとプラットフォームデフォルトがUS-ASCIIだから,UTF-8を受けても問題ないんだよなあ。きっと。