Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
26.05.2003, 20:42 | #1 |
Новенький
Регистрация: 07.06.2003
Сообщений: 18
|
(не)русские буквы в javascript-окнах
Захотелось сделать проверку заполнения обязательных полей в почтовой форме (той, которая обычный элемент контента).
Проверка-то происходит, да вот сообщение о незаполненных полях выдается кракозябрами (типа Iacaaiea oo?a eee no?aia: Aaoa)(не знаю, отобразятся ли они здесь; вообще это всякие буквы латинницы с умляутами и прочими диакритическими(?) знаками). На текущий момент накопал вот чего: Обработка объекта FORM происходит в "tslib/class.tslib_content.php" . Там есть строки типа rawurlencode($conf["goodMess"]). Функция rawurlencode "возвращает строку, в которой все не-алфавитные символы, кроме: "-" "_" и "." будут заменены знаком процента (%), с двумя символами за ним. Это кодировка, описанная в RFC 1738 для защиты не-буквенных символов от интерпретирования.". В результате образуется строка вида "%D2%C4%E0%F2%E0%20%EE" (программа перекодировщик "Штирлиц" называет такую кодировку "Q.P. Percent". msIE такого не понимает, по крайней мере, в javascript-окошках. Точнее, он не понимает, что это символы в кодировке win. Кстати, rawurlencode встречается в большой части кода typo3. Видимо, здесь же причина кракозябров в русифицированом бэкенде. Мысль такая: заменить rawurlencode своей функцией, которая будет перекодировать в "Q.P. Percent" только те символы, которые реально нужно прекодировать, а русские буквы оставлять без изменений. Либо перекодировать все, но не с помощью rawurlencode, не в "Q.P. Percent", а в другим способом. Гораздо лучше, например, работают варианты "Q.P. html numeric" ( йцу ) или "Q.P. java" ( u0439u0446u0443u043Au0435u043D ), они описывают символ в юникодовой таблице, так что браузер не сможет перепутать кодировку. Ух, устал писать.. Завтра еще посмотрю.. |