MediaWiki API e codificação
-
16-09-2019 - |
Pergunta
Eu estou usando o MediaWiki API para atualizar algumas páginas com um robô experimental . Este robô usa a biblioteca Java Apache HTTP-cliente para atualizar as páginas.
(...)
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);
(...)
No entanto, a string 'conteúdo' contém alguns acentos. System.out.prinln(content)
parece OK, mas os caracteres acentuados no mau wiki olhar. Por exemplo. 'Valrie' em vez de 'Valérie'.
Como posso corrigir isso?
Solução
OK, alterando o cabeçalho de solicitação corrigiu o problema.
postMethod.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
Outras dicas
No meu código PHP para falar com o MediaWiki API eu usei urlencode para codificar o parâmetro de título, e isso parece funcionar bem.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow