2009-07-16 9 views
5

私はMediaWiki APIを使っていくつかのページを実験的なロボットで更新しています。 このロボットはJava Apache HTTPクライアントライブラリを使用してページを更新します。MediaWikiのAPIとエンコーディング

(...) 
PostMethod postMethod = new PostMethod("http://mymediawikiinstallation/w/api.php"); 
postMethod.addParameter("action","edit"); 
postMethod.addParameter("title",page.replace(' ', '_')); 
postMethod.addParameter("summary","trying to fix this accent problem"); 
postMethod.addParameter("text",content); 
postMethod.addParameter("basetimestamp",basetimestamp); 
postMethod.addParameter("starttimestamp",starttimestamp); 
postMethod.addParameter("token",token); 
postMethod.addParameter("notminor",""); 
postMethod.addParameter("format","xml"); 
int status = httpClient.executeMethod(postMethod); 
(...) 

ただし、 'content'文字列にはアクセントが含まれています。 System.out.prinln(content)はOKと思われますが、Wikiのアクセント化された文字は悪く見えます。例えば。 'Valérie'ではなく 'Val rie'。

どうすればこの問題を解決できますか?

答えて

3

OK、リクエストヘッダーを変更すると問題が解決しました。

postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); 
0

Mediawiki APIと話す私のPHPコードでは、タイトルパラメータをエンコードするのにurlencodeを使用しましたが、これはうまくいくようです。

+0

こんにちはRoderic :-) ありがとうございますが、私はこれが問題ではないと思います。 'addParameters'メソッドは、POSTクエリを送信するときに既にデータを変換します。ソリューションはここにあります:http://tinyurl.com/lyxv8c。私は明日チェックします。 – Pierre

関連する問題