|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Chernomyrdin 2:5020/400 24 Jan 2003 17:18:42 To : All Subject : про кодировки... --------------------------------------------------------------------------------
Hi!
Тут возникла проблема - пользователи вводят в форму текст или этот текст
передается через третьи руки в качестве QUERY_STRING, как правило все приходило
в windows-1251, но тут вот стали появлятся уникумы которые умудряются в UTF-8
завернуть русские буквы.
Hа все это хозяйчтво был написан некий хак:
- --
use CGI::Util qw(unescape); # escape
use Encode qw(from_to);
sub decode_query {
my $self = shift;
my $str = shift;
if( defined $str and length $str ) {
$str = unescape( $str );
if( $str =~ /[\xd1\xd0][^\xa3\xb3\xa8\xd8\xc0-\xff]/o ) {
# is UTF-8 string
local $_ = $str;
if( from_to( $_, 'utf8', 'windows-1251' ) ) {
$str = $_;
}
}
}
return $str;
}
- --
% perl -v
This is perl, v5.8.0 built for i386-linux-thread-multi
Чуствую что можно сделать все совсем не так, а более правильно, но ничего более
умного в голову не приходит.
Буду благодарен за любой совет.
Да, сильно не ходетлос-бы заставлять всех пользователей переходить на utf-8, так
как это технически сложно.
--
With Best,
Andrey <andrey@excom.spb.su>
--- ifmail v.2.15dev5
* Origin: X-Com Online (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/64265465bb6e.html, оценка из 5, голосов 10
|