![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| mastercz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
Добрый день.
Если я правильно понял документацию, то uri_escape_utf8 и encodeURIComponent() являются подобными функциями. Однако почему-то у меня они выдают различный код одной и той-же строки 'ПРИВЕТ' (koi8-r) encodeURIComponent() -> %D0%9F%D0%A0%D0%98%D0%92%D0%95%D0%A2 uri_escape_utf8() -> %C3%B0%C3%B2%C3%A9%C3%B7%C3%A5%C3%B4 В связи с этим задан несколько вопросов. 1. Какую функцию и как использовать, чтобы можно было закодировать данные в JavaScript (и Perl) а а раскодировать потом в Perl. 2. uri_escape работает с 8-байтовыми последовательностями. Возможно ли работать с ней на JavaScript . 3. Для чего нужно кодирование в escape последовательность. Нужно ли это делать для POST переменной. Заранее благодарю за ответ. |
|||
|
||||
| Bulat |
|
||||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
mastercz, я думаю, что 'escape' и 'encode' - имеют два разных предназначения, конечно похожы, но есть небольшое отличие. Это во-первых. Во-вторых обрати внимание на
encodeURIComponent() -> %D0%9F%D0%A0%D0%98%D0%92%D0%95%D0%A2 uri_escape_utf8() -> %C3%B0%C3%B2%C3%A9%C3%B7%C3%A5%C3%B4 т.е. при encodeURIComponent() - не совсем понятно с кодировкой.
Когда я работал Perl & Java, то использовал Encode::decode - для более четкой передачи данных, после чего занового декодировал в Java
не знаю, скорее это нужно в раздел JavaScript. Лично я просто по приятельски, дружу не сильно
Хе-хе.. Тут боюсь рассказать не перерассказать. Для чего конкретно в веб - боюсь если я начну рассказывать со своей памяти, то больше совру.. Это лучше самому почитать - если очень интересно. А вообще эскейпить и кодировать/декодировать данные - это немного разные вещи. -------------------- менеджер по кодеврайтингу |
||||||
|
|||||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
0xD0 0x9F в UTF-8 - это юникодный кириллический символ "\u041F", буква "П". 0xC3 0xB0 в UTF-8 - это юникодный символ расширенной латиницы "\u00F0", на его месте в кодировке KOI8-R находится буква "П". Т.е. получается, encodeURIComponent() выдает обычный юникод в кодировке UTF-8. uri_escape_utf8() - тоже в кодировке UTF-8, но хитрее, с привязкой к исходной кодировке, типа "KOI8-R в UTF-8". Это сообщение отредактировал(а) amg - 17.11.2009, 11:13 |
|||
|
||||
| mastercz |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
с помощью модуля use URI::Escape::XS; удается получить строку
%D0%9F%D0%A0%D0%98%D0%92%D0%95%D0%A2 однако обратное преобразование почему-то не получается :
--> ПРИВЕТ --> %D0%9F%D0%A0%D0%98%D0%92%D0%95%D0%A2 --> ??? ???????? Немного поэкспериментировал, ОКАЗАЛОСЬ, нужно преобразовывать UTF8 к широким символам.
Только почему-то работает нестабильно иногда в переменной $var3 мусор какой то наблюдается. (Не мусор, неверно работает модуль. В bugs reports эту ошибку уже описали недели 2 назад ) P.S. Неужели не существует простых стабильных решений - чтобы в JavaScript заэскейпить а в перле разэскейпить ? Это сообщение отредактировал(а) mastercz - 18.11.2009, 07:12 |
||||
|
|||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Почему же, есть... Как минимум работать с одной кодировкой для начала - utf8, допустим. Подавляющее большинство проблем с кодировками только из-за этого. -------------------- менеджер по кодеврайтингу |
|||
|
||||
| mastercz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
Bulat приведи пожалуйста пример в любой кодировке, как заэскейпить в JavaScript и разэкскейпить в перл. |
|||
|
||||
| Bulat |
|
||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Я очень плохо знаю javascript. Когда я работал с java, то в перле декодирвал с помощью Encode::decode_utf8 и передавал, а в java
Обратно раскодировал. У меня кстати есть отдельная тема, здесь же, посвященная модулю Inline::Java и передаче параметров из одного языка другому. -------------------- менеджер по кодеврайтингу |
||||
|
|||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |