Re: Git-mediawiki : Encoding problems in perl
- From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
- Date
- Jun 8, 2011, 17:11 UTC
- Message-ID
- <vpqsjrkqmdj.fsf@bauges.imag.fr>
- In-Reply-To
- <BANLkTinKV3k7uu=+QzvUjrLdRD0TUj67pw@mail.gmail.com>
Jérémie NIKAES <jeremie.nikaes@gmail.com> writes:
Show 10 quoted lines
> Yes I tried uri_escape, but that only works in the direction mediawiki -> git. > A page named "Eté" on mediawiki comes as a Et%C3%A9.mw file on the repo. > However, when I try to send that file "Et%C3%A9" with the mediawiki > API, I get this error > > "Can't use an undefined value as a HASH reference at > /usr/local/share/perl/5.10.1/MediaWiki/API.pm line 554." > > So I tried to backslash the '%' but it does not do it... > Any idea ? Thanks
OK, I know that's cheating, but reading the doc helped ;-)
http://search.cpan.org/~exobuzz/MediaWiki-API-0.35/lib/MediaWiki/API.pm#MediaWiki::API-%3Eedit%28_$query_hashref,_$options_hashref_%29
The options hashref currently has one optional parameter (skip_encoding => 1). This is described above in the MediaWiki::API->api call documentation. which leads us to:
MediaWiki's API uses UTF-8 and any 8 bit character string parameters are encoded automatically by the API call. If your parameters are already in UTF-8 this will be detected and the encoding will be skipped. If your parameters for some reason contain UTF-8 data but no UTF-8 flag is set (i.e. you did not use the "use utf8;" pragma) you should prevent re-encoding by passing an option skip_encoding => 1 in the $options_hash.
In other words, Perl and MediaWiki::API use some black magic to detect UTF-8, and you want to disable it like this:
$mw->edit( {
action => 'edit',
title => $title,
text => $text,
}, {
skip_encoding => 1
} ) || die $mw->{error}->{code} . ': ' . $mw->{error}->{details};Tried it, worked :-).
This may well be an alternative solution to the earlier UTF-8 problem.
-- Matthieu Moy http://www-verimag.imag.fr/~moy/