![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| amorphius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.4.2009 Репутация: нет Всего: нет |
Есть такой участок кода:
Все просто, выводит через пробел все буквы строки (она будет русской). В заголовке странице указана кодировка - charset=UTF-8, текст скрипта сохранен в юникоде, но все равно сервер выдает вместо нормальной русской строки вопросительные знаки. Если убрать пробел между буквами, то все отображает корректно. Подскажите пожалуйста в чем проблема? |
|||
|
||||
| sir_nuf_nuf |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
1) если не ошибаюсь для юникода есть специальня прагма:
Попробуйте ее. 2) Вам нужно найти то место где происходит сбои. Проверьте, что скаляр ($a) действительно содержит именно юникод
Это покажет вам внутренню структуру скаляра. Там должен быть флаг UTF8. Кстати, покажите-ка эту отладку.. 3) Вы печатаете символы в терминал. Если у него кодировка не UTF8 (ну например у терминала Windows - cp1251, у FreeBSD - koi8-r) То вам нужно преобраховывать выходные данные с помощью
|
||||||
|
|||||||
| amorphius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.4.2009 Репутация: нет Всего: нет |
Dump абсолютно ничего не вернул
|
|||
|
||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
amorphius, а он ничего и не возвращает - он выводить на печать.
Модуль не забывли импортировать ? use Devel::Peek; пришлите код целиком |
|||
|
||||
| amorphius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.4.2009 Репутация: нет Всего: нет |
|
|||
|
||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
а вот оно что.. CGI
Dump($a) - выводит все в STDERR - смотрите логи веб-сервера. Там должны быть данные. Или если нет возможности - попробуйте перенаправить STDERR в STDOUT
P.S. вы забыли кстати вывести HTTP заголовок с указанием кодировки. Может быть в этом проблема |
|||
|
||||
| amorphius |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.4.2009 Репутация: нет Всего: нет |
проблема частично решена, выводит теперь все как надот. но появилась другая, также я полагаю связана с юникодом.
у меня стоит прагма
наполнение для сайта берется из базы, в базе все кодировки установлены на юникод, после соединения с базой сразу выполняю
в странице указано charset=UTF-8, тем не менее база возвращает данные в иероглифах. Как мне прочесть еще в нормальном виде данные из базы? |
||||
|
|||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
amorphius, так. База MySQL ?
Вообщем все правильно сделано. Только лучше делать не set names utf8; А при установлении соединения
Дело в том, что перл помечает utf строки особым флагом (который видно через Devel::Peek) - без этого флага - он не будет считать, что строки в utf. От этого могут быть глюки. Советы такие: 1) Сделайте Dump того, что непосредственно возвращает база.. ну любую ячейку из запроса сдампите и посмотрите стоит ли там utf флаг. 2) Проверьте, что в база на самом деле возвращает utf. Например подключитесь каким-нть utf клиентом (пойдет обычный текстовый mysql при условии, что кодировка консоли utf8 - сделайте set names utf8, сделайте выборку и посмотрите что вернулось) |
|||
|
||||
| amorphius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.4.2009 Репутация: нет Всего: нет |
проблема решена, правада не таким способом
|
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
amorphius, ну так поделитесь с общественностью
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |