Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 27.08.2004, 13:03   #1
Aleksey Barabanov
Новенький
 
Регистрация: 27.08.2004
Сообщений: 4
По умолчанию cyrillic validateForm

Если в форме не заполнить все необходимые поля (напрмер в боттоме данного форума , то выводится алерт, в котором искажаются кириллические символы из-за неправильной цепочки кодирования cp1251-> rawurlencode-> unescape-> Latin-1. И даже, как это видно на этом сайте, не помогает перевод на utf-8. Проблема решается модификаций текста этой самой validateForm. Но решение становится не универсальным, для cp1251 одна функция перекодировки, для utf-8 другая... Да и поскольку сама эта функция не вынесена в TS объекты, то манипулировать ею можно только путем прямого патчирования.

Вопрос. Кто-то решал это кардинально ?
Aleksey Barabanov вне форума   Ответить с цитированием
Старый 01.09.2004, 01:36   #2
Andreas Schwarzkopf
Senior Member
 
Регистрация: 14.08.2003
Сообщений: 416
По умолчанию

Насколько я понимаю, этот вопрос обсуждался на днях в форуме разработчиков, там же есть рекомендации, как исправить проблему:

http://typo3.org/documentation/mailing-lists/dev-list-archive/thread/59339/?tx_maillisttofaq_pi1%5Bpointer%5D=1&tx_maillistto faq_pi1%5Bmode%5D=1
и
http://typo3.org/documentation/mailing-lists/dev-list-archive/thread/61202/?tx_maillisttofaq_pi1%5Bmode%5D=1
Andreas Schwarzkopf вне форума   Ответить с цитированием
Старый 02.09.2004, 00:54   #3
Aleksey Barabanov
Новенький
 
Регистрация: 27.08.2004
Сообщений: 4
По умолчанию

Спасибо.

Первый тред конечно заполнен всякого рода ламеризмами. Но вот по второй ссылке Мартин дает точную формулировку этой ситуации.

Но там нет рекомендаций. Там есть точно такой-же вопрос.
Aleksey Barabanov вне форума   Ответить с цитированием
Старый 02.09.2004, 19:50   #4
Andreas Schwarzkopf
Senior Member
 
Регистрация: 14.08.2003
Сообщений: 416
По умолчанию

Алекесей, я не занимался этой темой детально и мало могу сказать по существу. Но мне кажется, возможные пути уже показаны в последнем сообщении первого треда:

Solution one for newer browsers:

* encodeURIComponent() -> urldecode(); cs->conv($str,'utf-8',$cs)
* cs->conv($str,$cs,'utf-8); urlencode() -> decodeURIComponent()

Solution one for \"all\" browsers:

* escape() -> cs->unescapeJS($cs,$unicode,$str)
* cs->escapeJS($cs,$unicode,$str) -> unescape()

Может быть это еще не все, но я думаю, стоит попробовать.
Andreas Schwarzkopf вне форума   Ответить с цитированием
Старый 02.09.2004, 23:53   #5
Aleksey Barabanov
Новенький
 
Регистрация: 27.08.2004
Сообщений: 4
По умолчанию

Вы не совсем правы. Там далее:
Of course the JS-style conversion functions have to be written yet.

В обшем то я сделал простенькое решение - свой перекодировшик в js.

И я пробовал всевозможные комбинации. Но дело в том, что php преобразует cp1251, причем как его не проси, а js расшифровывает Latin1, что тоже без вариантов. Т.е. все комбинации с конвертацией типа cs->conv вообще не имеют смысла. Т.к. на входе их должен быть корректный код, а для js он после php уже \"ломанный\". Если только не заменить одну из встроенных функций php или js на самописный кодировщик.

Не спроста Мартин в концен своего письма приводит ссылки на описание упомянутых стандартных кодировщиков. Я так думаю, чтобы те, кто предлагает, сначала прочли документацию, проверили, а потом уже высказывали версии. А то весь первый тред кто-то что-то предлогал, а Мартин проверял

И еще, я думаю в любом случае в js ПРИДЕТСЯ делать перекодировку согласно выбранной кодовой страницы, поскольку в js используется utf-8 или Latin-1 и без конвертации в локальную кодировку там не обойтись. Поэтому чтобы не править с двух сторон, лучше править только js.
Aleksey Barabanov вне форума   Ответить с цитированием
Старый 07.09.2004, 13:21   #6
Andreas Schwarzkopf
Senior Member
 
Регистрация: 14.08.2003
Сообщений: 416
По умолчанию

Мартин опубликовал новое расширение masi_utf8fe36
Может быть он там исправил и эту ошибку?
Andreas Schwarzkopf вне форума   Ответить с цитированием
Старый 08.09.2004, 20:10   #7
Aleksey Barabanov
Новенький
 
Регистрация: 27.08.2004
Сообщений: 4
По умолчанию

Да, я в курсе.

Это расширение расширяет фронтэнд и вставляет ряд хуков так, чтобы использовать utf-8 в качестве ядра для всех преобразований символов. Т.е. не строить кросстаблицы, а все делать через промежуточное преобразование в utf-8.

Сейчас вышла версия 0.2.0, которая полностью исправляет проблему с upper для кириллицы. По крайней мере для cp1251. Теперь можно не блокировать преобразование авторских имен в upper в новостях и гостевой книге. Все работает.

Но обсуждаемую проблему это не решает.

Как написал сам Мартин, у него есть уже корректный заменитель для встроенных конверторов php. Но проблема в том, что есть JS старого стиля и новые в соответствии с ECMA.

Как мне кажется все завершится модификацией серверной части, т.е. php, где от типа броузера будут строиться соответстующие кодированные строки для JS.
Aleksey Barabanov вне форума   Ответить с цитированием
Ответ


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

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 20:26.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория