Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Транслитерация в utf-8


Автор: SHAmanovi4 12.12.2007, 15:08
Возникает проблема при попытке транслитерации строки. Задача такова: я загружаю файлы на сервак. При этом, нужно произвести транслитерацию имен файлов, чтобы предотвратить загрузку файлов, обозванных по-русски. Весь сайт на utf-8. Файлы в винде именуются, как я понял, в вин-1251.

Пишу:
Код

my $post = $cgi->param('file');
$post =~ m#.*[\\\/](.*?)$#;
my $name = $1;
$name =~ tr/абвгдеёжзийклмнопрстуфхцчшщьыъэюя/abvgdeejziyklmnoprstufhc4wwiiyeuy/;
print $name;


Вываодит явно не то, что я хочу... количество символов увеличивается, появляются "квадраты" вместо символов. Сам скрипт в utf-8, отдается все в utf-8.

Автор: Bulat 28.12.2007, 11:59
SHAmanovi4, 

use URI::Escape

uri_escapeutf8 - писал по памяти, проверь по перлдоку точное название, возможно поможет, правда я его использовал немного в иных целях, но тоже переводил кодировку в utf8

Автор: SHAmanovi4 28.12.2007, 15:20
Спасибо большое. Посмотрю.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)