| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: разработка для Web > проблема с кодировками |
| Автор: GShadrin 23.8.2009, 18:20 | ||
| На стороне клиента передается русский текст на сервер. Используется метод get. Печатаю принтом это поле - получаю "Перл" вместо "Перл". Стоит "Русский apache". Кодировка страницы charset=windows-1251 На сервере такой код:
читал вот такое * Если ASCII код символа больше 32 и меньше 128, то он будет выдан без изменения. * если символ - пробел, то он заменится на "+" (плюсик, без кавычек) все остальное преобразуется в вид %xx, где xx -- шестнадцатеричный код символа. Если вам повезло и у вас "Русский apache", то он преобразует его в нормальную кодировку. http://www.linux.org.ru/books/perl-faq/ru-perl-faq-4.html Но процентиков у меня не выводит. Значит apache его преобразовал. Почему текст битый? Если напишу: print("Перл"); напечатает "Перл" |
| Автор: GoodBoy 25.8.2009, 16:17 |
Это - Юникод... Копай в эту сторону... Данные со страницы у тебя приходят не в той кодировке... |
| Автор: sir_nuf_nuf 26.8.2009, 08:11 |
Неплохо.. это в школе джедаев кракозябры читать учат ? Добавлено через 5 минут и 16 секунд Хм.. по делу: 1) попробовать не print на страницу делать, а print STDERR - что выведет в лог сервера ? 2) попробовать перед выводом данных на страницу конвертировать их из utf-8 в windows-1251. Похоже, что "русский" апач - конвертит автоматически в utf8 входные данные. |
| Автор: GShadrin 26.8.2009, 12:12 |
| перекодировал из utf-8 в windows-1251 все работает |
| Автор: sir_nuf_nuf 26.8.2009, 14:33 | ||
посмотрите, что передается по HTTP. Можно воспользоваться сниффером. |
| Автор: aksined 28.8.2009, 14:08 | ||
| не нужно пользоваться снифеером русский апач сам ничего не конвертирует.
Вы же сами видите, что в лог записались данные в utf-8. Если Вы не приложите усилий по конвертированию их в нужную кодировку, апач этого сам делать не будет. Какие данные вы будете отдавать скриптом, такие они и уйдут к клиенту. Кодировка страницы - это то, как будет браузер на стороне клиента интерпретировать данные. Предлагаю эксперимент. Уберите конвретирование, а на стороне клиента руками поменяйте кодировку на utf-8 |