anonymous@RULINUX.NET~# Last login: 2024-12-27 03:05:53
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

CCCP-Encode-0.01

Если на frontend Вы используете ajax, то давно заметили, что данные отправляются на сервер в utf-8. На стороне сервера Вы "ловите" эти данные перекодируете за счёт Encode и, всё хорошо. Но, что если юзер поменял кодировку отображения страницы прямо в браузере, или (более вероятно) сделал copy-paste с внешнего сайта в одно из полей формы на Вашем сайте. Вот здесь-то и попадает utf-8 в обработку. Это очень актуально для раздела "комментарии". Вы ловите такие данные, перекодируете за счёт Encode, но юзер вместо своего "красивого" комментария видит строку со знаками "?" Сивиринов Иван выпустил маленькую библиотеку для декодирования utf-8 в koi8-r, windows-1251 и т.д. дабы побороть такого типа проблемы

>>> Подробнее

vilfred(*) (2010-03-11 14:21:23)


Подтверждено: vilfred(*) (2010-03-11 14:21:31)

[Ответить на это сообщение]

[#] [Добавить метку] [Редактировать] Ответ на: CCCP-Encode-0.01 от vilfred 2010-03-11 14:21:23
avatar
Скрыть

Re: CCCP-Encode-0.01

а чем его iconv не устроил?

Tux-oid(*)(2010-03-11 14:31:10)

Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5
[#] [Добавить метку] [Редактировать] Ответ на: Re: CCCP-Encode-0.01 от Tux-oid 2010-03-11 14:31:10
avatar
Скрыть

Re: CCCP-Encode-0.01

а фиг знает чем он его не устроил =) меня название порадовало =)

vilfred(*)(2010-03-11 14:43:54)

Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.8) Gecko/20100202 AdCentriaIM/1.7 Firefox/3.5.8
[#] [Добавить метку] [Редактировать] Ответ на: Re: CCCP-Encode-0.01 от Tux-oid 2010-03-11 14:31:10
avatar
Скрыть

Re: CCCP-Encode-0.01

>а чем его iconv не устроил?
Наверное потому что использовать системные вызовы в перле моветон?

gnomino(*)(2010-03-11 15:09:57)

Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc12 Firefox/3.5.8
[#] [Добавить метку] [Редактировать] Ответ на: CCCP-Encode-0.01 от vilfred 2010-03-11 14:21:23
avatar
Скрыть

Re: CCCP-Encode-0.01

А в обратную сторону не кодирует? А что делает с символами, которые нет в целевой кодировке: подставляет "наиболее похожий" или просто забивает на него? Меня всегда убивал iconv, который на первом же символе затыкается и в итоге ничего не понять, что написано.

Только из-за названия и стоит брать :) NATO-encoding не планируют там америкосы случаем? :)

anonymous(*)(2010-03-11 15:14:03)

[#] [Добавить метку] [Редактировать] Ответ на: Re: CCCP-Encode-0.01 от gnomino 2010-03-11 15:09:57
avatar
Скрыть

Re: CCCP-Encode-0.01

Блин, оно на перле чтоли? Такое название испохабить.

anonymous(*)(2010-03-11 15:15:54)

[#] [Добавить метку] [Редактировать] Ответ на: CCCP-Encode-0.01 от vilfred 2010-03-11 14:21:23
avatar
vilfred(*)(2010-03-11 15:55:48)

Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.8) Gecko/20100202 AdCentriaIM/1.7 Firefox/3.5.8
[#] [Добавить метку] [Редактировать] Ответ на: Re: CCCP-Encode-0.01 от anonymous 2010-03-11 15:15:54
avatar
Скрыть

Re: CCCP-Encode-0.01

> Такое название испохабить.
Судя по гуглу, уже не осталось айтишник который бы ноги не вытер об это название..

HEBECTb_KTO(*)(2010-03-11 18:59:47)

[#] [Добавить метку] [Редактировать] Ответ на: CCCP-Encode-0.01 от vilfred 2010-03-11 14:21:23
avatar
Скрыть

Re: CCCP-Encode-0.01

Text::Iconv не отработает, т.к. встретит неизвестный символ "\x{2014}":

use Text::Iconv $converter = Text::Iconv->new("utf-8", "koi8-r") print $converter->convert("если в слове 'хлеб' поменять 4 буквы, то получится — ПИВО")

Encode отработает, но подставит "?" где символы не имеют аналогии.

В utf, по определению, входят символы не имеющие аналога в коя/винде (уж вам-то не знать :) ). Существует единственное решение - посимвольная перекодировка. И здесь, в каждом проекте, свой костыль.

И проблема эта одинаково актуальна и для России, и для Украины, и для Казахстана и пр., где есть собственная кириллическая локаль.

CCCP::Encode предлагает наиболее универсальное решение: регексп работающий с unicode, замена неизвестных символов в таргет кодировке на соответствующий html-entities или текстовый символ (в зависимости от режима) на основе дефолтных либ (с возможностью перегрузки значений).

В описании CCCP::Encode чётко указано в каких случаях его следует использовать: - база в коя/винде, а данные от ajax приходят в utf (см w3c об ajax, описание jQuery, Prototype и пр.) - отправка писем в коя/винде, когда исходные данные в utf - везде где приходится перекидывать данные из utf в кириллическую локаль.

Использовать CCCP::Encode или писать свой костыль - решайте сами.

anonymous(*)(2010-03-24 11:12:35)

Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2
[#] [Добавить метку] [Редактировать] Ответ на: Re: CCCP-Encode-0.01 от anonymous 2010-03-24 11:12:35
avatar
Скрыть

Re: CCCP-Encode-0.01

никак автор пришел?!

vilfred(*)(2010-03-24 13:11:50)

Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 (.NET CLR 3.5.30729)
[#] [Добавить метку] [Редактировать] Ответ на: Re: CCCP-Encode-0.01 от vilfred 2010-03-24 13:11:50
avatar
Скрыть

Re: CCCP-Encode-0.01

Угу

anonymous(*)(2010-03-24 16:20:47)

Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2
[#] [Добавить метку] [Редактировать] Ответ на: Re: CCCP-Encode-0.01 от anonymous 2010-03-24 16:20:47
avatar
Скрыть

Re: CCCP-Encode-0.01

O_o, фигассе!

спасибо за модуль!

vilfred(*)(2010-03-24 18:34:53)

Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.8) Gecko/20100202 AdCentriaIM/1.7 Firefox/3.5.8
Этот тред читают 1 пользователь:
Анонимных: 1
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!