Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Веб-программирование > XML & WML
Перезагрузить страницу Русский язык в WAP Формах
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
LanDyx LanDyx вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.12.2004
По умолчанию Русский язык в WAP Формах - 23.12.2004, 23:00

<input type="text" name="s" emptyok="false" />
Send

Вот такой код работает, но русские буквы и некоторые символы преобразуются в формат типа %22. Как оказалось, это последний байт(!) кода этого символа в кодировке UTF-8. Самое страшное, то что этого не достаточно для преобразования обратно, так как некоторые коды совпадают! Например совпадает "к" и ":", что явно неприемлимо.

Я правда эксперементировал с Оперой, а не с WAP клиентом на трубе. Возможно, это заморочка оперы.

Кто нибудь сталкивался с этим?
Ответить с цитированием
  (#2 (permalink)) Старый
SiMM SiMM вне форума
Member
 
Сообщений: 1,961
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.08.2003
По умолчанию Re: Русский в WAP Формах - 24.12.2004, 01:54

Цитата:
но русские буквы и некоторые символы преобразуются в формат типа %22. Как оказалось, это последний байт(!) кода этого символа в кодировке UTF-8
Как оказалось, это не совсем (совсем не) соответствует действительности. Например, я передаю строку АЯаяЁё, и получаю в $_SERVER['REQUEST_URI'] значение параметра %10%2F%30%4F%01%51. На самом деле - это младший байт Unicode (не путать с UTF-8). При желании можно попробовать восстановить при помощи небольшого кода
Код:
$str = preg_replace('#%([0-9A-F]{2})#e', // выход будет в Windows-1251
                    '"$1"=="01" ? "xA8" : 
                    ("$1"=="51" ? "xB8" : chr(hexdec("$1")+0xB0))',
                    $str
                   );
Цитата:
совпадает "к" и ":", что явно неприемлимо.
Да, есть такой момент.
Цитата:
Возможно, это заморочка оперы.
Очень может быть.
Цитата:
Кто нибудь сталкивался с этим?
Я даже с WAP'ом не сталкивался, посему совет на будущее - приводи код полностью - понятия не имею, как в WAP указывается кодировка контента.
Ответить с цитированием
  (#3 (permalink)) Старый
LanDyx LanDyx вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.12.2004
По умолчанию 24.12.2004, 09:29

Хм. Я взял эти 22, добавил перед ним D0 и записал эти 2 байта в файл HEX редактором. Открываем в ИЕ ставим кодировку UTF-8 и получаем исходный символ. Для "D022" это "Т".

Цитата:
Я даже с WAP'ом не сталкивался, посему совет на будущее - приводи код полностью - понятия не имею, как в WAP указывается кодировка контента.
Никак не указывается. Там помоему ничего кроме UTF-8 и не поддереживается.
Ответить с цитированием
  (#4 (permalink)) Старый
SiMM SiMM вне форума
Member
 
Сообщений: 1,961
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.08.2003
По умолчанию 24.12.2004, 14:45

Цитата:
Originally posted by LanDyx
[b]Хм. Я взял эти 22, добавил перед ним D0 и записал эти 2 байта в файл HEX редактором. Открываем в ИЕ ставим кодировку UTF-8 и получаем исходный символ. Для "D022" это "Т".
В UTF-8 подобная комбинация просто недопустима (не может там за символом с кодом 0xD0 следовать символ с кодом 0x22). Вот в UTF-16, если снабдить 22 кодом 04 (т.е. будем иметь 0x0422), всё получается как надо.
Цитата:
<div class='quotetop'>Цитата
Цитата:
Я даже с WAP'ом не сталкивался, посему совет на будущее - приводи код полностью - понятия не имею, как в WAP указывается кодировка контента.
Никак не указывается. Там помоему ничего кроме UTF-8 и не поддереживается.[/quote]Тогда и не стоит ожидать от оперы иного поведения. Ей же не сказали, в какой кодировке контент и в какой кодировке принимать введённые пользователем данные.
Ответить с цитированием
  (#5 (permalink)) Старый
LanDyx LanDyx вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.12.2004
По умолчанию 24.12.2004, 20:01

Цитата:
Originally posted by SiMM
[b]В UTF-8 подобная комбинация просто недопустима (не может там за символом с кодом 0xD0 следовать символ с кодом 0x22). Вот в UTF-16, если снабдить 22 кодом 04 (т.е. будем иметь 0x0422), всё получается как надо.
ИЕ подобный набор как символ не воспринимает...

Но веселье только начинается! Эмулятор WAP браузера WinWAP 3.1 PRO генерит на том же скрипте запрос с кодами букв в Win кодировке!

Теперь ищу телефон для проверки...

Upd:

Нашел.
Нокиа 6600: Кодирует в полные два байта ЮТФ-8 в формате %D0%22. Первый байт именно D0.

Сименс C60: Это шедевр! "АЯ ая" превратилось в "AJA%20aja"! Уж не знаю в каком месте строка приобрела такой вид, но похоже, что именно на браузере телефона...

Какой мутант это делал?...
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
SiMM SiMM вне форума
Member
 
Сообщений: 1,961
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.08.2003
По умолчанию 25.12.2004, 00:45

Цитата:
Originally posted by LanDyx
[b]ИЕ подобный набор как символ не воспринимает...
Потому что кодировку, если не ошибаюсь, нужно указывать как UTF-16. Либо просто наберите Т - это в браузере работает как обозначение Unicode символа.
Цитата:
Нокиа 6600: Кодирует в полные два байта ЮТФ-8 в формате %D0%22. Первый байт именно D0.
Ещё раз повторяю - это - не UTF-8. Что угодно - но не UTF-8 (ссылки для ознакомления я вам дал - в кратце - второй байт ну никак не может быть меньше 0x80). Скорее всего браузер от MS просто игнорирует спецификацию и ему плевать на старший бит - тогда всё сходится
Цитата:
Сименс C60: Это шедевр! "АЯ ая" превратилось в "AJA%20aja"! Уж не знаю в каком месте строка приобрела такой вид, но похоже, что именно на браузере телефона...
Именно на браузере (т.е. проблема в телефоне). Автотранслитерация, видимо. С SMS'ками наверно та же история
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cmd - русский язык как его установить Вака С/С++ 9 30.06.2011 20:23
Как вывести русский язык. lifefine Prolog 2 02.06.2011 03:36
Русский язык в Squeak danio Smalltalk 12 30.08.2008 01:01
Русский язык в squeak в Mac OS leto317 Smalltalk 20 24.06.2008 12:12
Help коверкает русский язык Sati Delphi 2 20.05.2006 10:22
EZY Prolog и русский язык Сергей Пеньков Prolog 1 01.05.2006 08:10
Русский язык и exe-шники Amputator Pascal 2 20.02.2006 22:51
Русский язык Dian Мысли вслух 30 01.11.2005 17:24
Русский язык и M$Visual 7.0 Omen Visual C++ 6 28.02.2005 10:15
Русский Язык и Mysql serg3 MySQL 3 21.02.2005 22:43
Русский язык в PostgreSQL wolf PostgreSQL 1 28.05.2004 13:01
Как включить русский язык Anonymous Офтопик 1 30.04.2003 13:07



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов