The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Оперирование кодировками Perl"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Оперирование кодировками Perl"  +/
Сообщение от SubGun (ok) on 05-Авг-09, 10:46 
Есть скрипт на перле, который берет из базы значение в cp1251, а затем должен сделать

system("mkdir reports/$string")

Вот только на FreeBSD и на Linux cp1251 распознается вопросиками(или всякими /399/411) и не создают нормально папки. Я пробовал что-то вида:

$res_string=`system("iconv -f cp1251 -t utf-8 $string")

для преобразования кодировок, но это тоже мало помогло. Есть ли какой-нибудь другой способ оперирования кодировками в perl? Либо другой вариант решения?
Еще мне понадобится создавать файл с содержимым из базы, так что придется научиться преобразовывать кодировку из Perl.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Оперирование кодировками Perl"  +/
Сообщение от di (??) on 05-Авг-09, 11:23 
О почему собственно ?
>
>$res_string=`system("iconv -f cp1251 -t utf-8 $string")
>

Здесь нужно

$res_string=`system("echo $string|iconv -f cp1251 -t utf-8");


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Оперирование кодировками Perl"  +/
Сообщение от SubGun (ok) on 05-Авг-09, 12:06 
Спасибо, действительно получилось. Но почему-то при таком:

my $stu = $dbh->prepare(qq{SELECT name FROM users WHERE gid='$squid_gid'});
$stu->execute();
while (my ($squid_name) = $stu->fetchrow_array()) {
       $res_string = system("echo $squid_name | iconv -f cp1251 -t utf8");
       print " $res_string";
                                                  }

перед результатом возникает гадкий "0":

0Просветова Светлана Дмитриевна
0Кузнецова Галина Федоровна
0Карпышева Елена Юрьевна
0Чайка Елена Сергеевна
0Маланьина Екатерина Николаевна
0Буклова Елена Александровна
0Астанина Мария Александровна

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Оперирование кодировками Perl"  +/
Сообщение от SubGun (ok) on 05-Авг-09, 12:35 
Ладно, отрезал регуляркой.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Оперирование кодировками Perl"  +/
Сообщение от Аноним (??) on 05-Авг-09, 12:21 
Еще такой вариант:
use Encode;
$content = decode('utf8', $content);
в данном случае декодирование $content из utf8 во внутреннее представление, т.е. в cp1251 например, если сам скрипт в cp1251. Есть там и обратная функция encode соответственно.
Почитайте доку по модулю Encode.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Оперирование кодировками Perl"  +/
Сообщение от angra (ok) on 05-Авг-09, 17:40 
Судя по всему локаль у тебя юникодная, ну так и выбирай из базы сразу в utf8. Смотри мануал к мускулу на предмет SET NAMES
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру