![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
rcdimon |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Есть строка, в utf8 и мне нужно ее перекодировать в win-1251 для вывода на экран!
Для этого я неизвестно где взял вот такую процедуру
Если в нее сунуть данные из переменной она ответит пустой строкой! Но если считать данные из файла тоже в кодировке utf8 То она переконвертирует. Тогда я свою переменную сначала пихал в файл, потом читал его и вводил в процедуру- тогда все ОК. Но прямо из переменной не хочет конвертировать и все! Тогда я решил проверить чем же отличаются данные из файла и из переменной. Если просто вывести на экран- то ничем. Для детальной проверки сделал так
и у меня получились очень интерсеные результаты ![]() Из файла вот:
а из переменной вот
Откуда код символа может быть 1082, 180 и т.д! Я просто в шоке.. Помогите пожалуйста с перекодировкой! |
||||||||
|
|||||||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
rcdimon
perldoc perlunicode perldoc perluniintro
![]() -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Software error:
Cannot decode string with wide characters at q:/usr/perl58/lib/Encode.pm line 186. For help, please send mail to the webmaster (rcdimon), giving this error message and the time and date of the error. Добавлено @ 16:08 Кстати если интересно откуда я беру данные для перекодировки- то я получаю их из модуля XML::RSS и пытаюсь их перекодировать в windows-1251 а XML::RSS в процессе своей работы входящие в него данные перекодирует в UTF-8 |
|||
|
||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
rcdimon ты мой пример запускал?
у меня вот что:
-------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
ДА. Работает если давать ему нормальные данные... НО
![]() Software error: Cannot decode string with wide characters at q:/usr/perl58/lib/Encode.pm line 186. For help, please send mail to the webmaster (rcdimon), giving this error message and the time and date of the error. |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Короче rod() от символов получается больше чем 255. Поэтому он и не хочет эти символы перекодировать! А почему такие символы берутся- непонятно
![]() |
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
-------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
А никак нельзя обойтись без подключения нестандартного модуля?
|
|||
|
||||
Sadok |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 2.11.2004 Репутация: 1 Всего: 2 |
rcdimon
Вот тебе хэш,по нему и заменяй
|
||||
|
|||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Пасиба
![]() |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
|
|||
|
||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
nitr, попробуй то же самое сделать через tr и задание диапазона значений (значения у тебя ведь попорядку идут).
![]() Зачем в ручную конвертировать, это же не транслит? В perl 5.8.x - есть модуль Encode, который входит в стандартную поставку perl. (!) В perl 5.6.x - можно используя дополнительные модули, например, cyrillic или Text::Iconv. Всем советую переходить на perl 5.8.7 - последюю стабильную версию perl и использовать встроенные средства. ![]() -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
=) Ему почему-то так не хотелось... И ещёё раз повторяюсь, на многих шеллах перл 5.004 и 5.005, и бывает урезаны модули, так что всё ОК думаю
![]() |
|||
|
||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
к чертям такие шеллы! Нормальная support-команда достаточно хорошо следит за своим программным обеспечением. -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Я думаю, скорее про халявные говрил ;)
|
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Вот когда летом, наконец, поставлю на площадку свой севрер, вот тогда будте УВЕРЕНЫ! У меня стоит самый новый перл и модули, какие мне нужны ![]() |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
rcdimon, тож пригодиться:
|
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Где Text::Iconv можно взять для PPM ?
|
|||
|
||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
-------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Признаться честно- так и не нашел где же там его можно скачать....
![]() |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Все, нашел. Нужно было всего-то в Google.com набрать Text::Iconv ppd и перейти по первой ссылке
![]() НО он не может мне помочь! Глюки какие-то!
Выдает ужасную абракадабру! Прошу еще раз обратить внимание- что коды символов, котрые выдает XML::RSS- ord() бывают больше тысячи! Если взять просто строку в UTF-8 или считать ее из файла- то все отлично перекодируется. А вот из XML::RSS НИКАК! ![]() Это сообщение отредактировал(а) rcdimon - 24.2.2006, 16:27 |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
|
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Этим я уже пользовался. И как раз, когда это мне не помогло, пошел эксперементировать с Text::Iconv
|
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Вот экспериментируй ![]() Это сообщение отредактировал(а) nitr - 24.2.2006, 18:50 |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
А что это за штука? При чем тут UTF-16?
|
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Ужасные траблы с кодировкой именно в консоле! Когда программа запущена из под веба- то с кодировкой все ок!
А в консоле начиает глючить! на вставке в базу данных особенно.. совсем не понимаю в чем дело! помогите пожалуйста ![]() ![]() Добавлено @ 00:38 Чем для программы на перл отличается запуск из консоли от запуска через веб? |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Консоль.... KOI8-R =)))
|
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Ну во первых не кои8 а cp866
а во вторых мне все равно надо сделать что бы все работало! Я где-то видел какой-то маленький код, который изменяет кодиковку стандартного выходного потока! Можно указать свою! И это действительно работало! Но мне тогда это было не нужно и я потерял куда-то.... Кто нить знает че нить по этой теме? Добавлено @ 09:31 В реальных условиях программа будет работать под Unix. Сейчас же для разработки я использую винду и денвер. |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
чего? у тебя не *nix сервер? Для меня это странно ;) Да и даже под виндой cp866, думаю глупо... А свой выходной поток просто в файл перенапрявь, вот и решение проблем!!! А так глупо... в консоле результат глядеть
![]() |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Да я не в консоле его гляжу!
Я получаю данные, которые мне передает XML::RSS, перекодирую их из utf-8 в cp1251 и записываю в базу данных! И в базе такая мура! Если в эту же базу пистаь через Perl программу, которая работает через веб- то все ок.
В нормальных условиях программа будет работать под *nix, но при разработке я использую денвер! |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Значит проверь БД... больше никто думаю нового не придумает, просто ещё добавять пяток новых способов, которые конкретно тебе, не ПОМОГУТ. На форуме поиск хороший, ищи всё что с кодировками БД, тем более недавно об этом говорилось... Читай внимательно! BlackLFL он отвечал на эти вопросы...
|
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
так можешь перегнать cp1251 в cp866:
![]() Для того, что бы проверить это, достаточно попробовать сохранить данные полученные из RSS в текстовый файл. Если там не увидешь абракадабры, то меняй кодировку БД. Это сообщение отредактировал(а) korob2001 - 26.2.2006, 22:43 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Вот верно
![]() ![]() Добавлено @ 22:50 О!, а можно из cp1251 ещё раз в cp1251 кодировать? ![]() |
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Угу ![]()
-------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
=) а что делает вот этот код?
а обратно в utf? Добавлено @ 23:02 для чего используют
|
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
самое интересное вот в чем...
Что если подготовить SQL запрос в переменной, а потом записать его в файл, а потом считать из того же файла и отправить базе- то все ОК.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |