LINUX.ORG.RU

Опасность использования юникода


0

2

Обратил внимание что в последнее время основная часть багов в технологиях касающихся веб разработки связана так или иначе с обработкой utf-8 строк. Насколько опасно применение юникода в продакшн? Целесообразно ли его применение если веб приложение рассчитано в основном на англоязычных пользователей (для возможности расширения аудитории в будущем)?


Ответ на: комментарий от d9d9

это must be отсекатся на этапе валидации .

ну и?

были времена когда в строке не должны присутствиувать символы завершения записи и тп . то что ща в теории все 128 нижних символов допустипы - очень сильный аргумент к использованию 7 битки - ок удачи.

случий неоднозначного предстваления ещё мона «востановить»

в случае обрыва самого символа влюбом случае должно быть действие либо отказ и повтор передачи либо выкусывание в выходной последовательности не полного символа входа. - это(поведение) не регламентировано стандартом .

чекать . ну и?

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

это must be отсекатся на этапе валидации .
ну и?

Должно != делается и этому способствуют языки, работающие с utf-8 как с байтами по умолчанию.
Это не значит, что utf-8 не нужно использовать.
Обсуждать и нуикать тут больше неочем.

d9d9 ★★★★
()
Ответ на: комментарий от Eddy_Em

Так что, если сайт с юникодом и содержит в основном текстовую информацию, он будет примерно в 2 раза «тяжелее», чем на нормальной восьмибитной кодировке.

$ cd /tmp
$ wget http://www.linux.org.ru/forum/web-development/7607991 -O utf8.html
…
$ ls -l utf8.html
… 82715 …
$ iconv -t cp1251//translit utf8.html > cp1251.html
$ ls -l cp1251.html
… 65551 …
[/quote]

Итого — прирост 26%

Далее:
$ wget --header="Accept-Encoding: gzip" http://www.linux.org.ru/forum/web-development/7607991 -O utf8.html.gz
… 14541 …

$ gzip --best cp1251.html
… 19816 …

$ gzip --best utf8.html
… 21433 …

Фиг знает, почему сервер упаковал настолько сильнее десктопного gzip'а, но даже если сравнивать просто работу gzip'а, то прибавка лишь 8%

Так как-то…

KRoN73 ★★★★★
()
Ответ на: комментарий от GateKeeper

и не видел ни разу индусокода, который работает со строками бинарно и по правилу «1 байт - 1 символ»

Если ориентироваться на индусов, то пользоваться вообще ничем нельзя.

KRoN73 ★★★★★
()
Ответ на: комментарий от GateKeeper

Откуда «англоязычный» сайт, если я тебе говорил про worldwide?

Читайте внимательнее первый пост темы. Там поставлен вопрос целесообразности использования на англоязычном сайте.

psp13
() автор топика
Ответ на: комментарий от unC0Rr

Плох тот язык (или библиотека), в котором приходится данные запихивать в строку запроса и эскейпить.

Расскажите какая библиотека и какое RDBMS работает по другому.

psp13
() автор топика
Ответ на: комментарий от psp13

для англоязычных «в основном» != «только» для англоязычных. Грубо говоря: если на сайте стоит предупреждение (соблюдение которого энфорсится валидаторами любого пользовательского ввода) о том, что принимаются только и исключительно ASCII-символы в любой из предлагаемых сайтом форм - тогда это сайт для англоязычных пользователей. В противном случае - worldwide.

GateKeeper ★★
()
Ответ на: комментарий от psp13

Любое RDBMS, поддерживающее PREPARE/BIND/EXECUTE и, соответственно, любой язык, имеющий к этому биндинги. Правда, не всякий быдлокодер сумеет дотумкать этим воспользоваться. Примеров на говнокоде достаточно.

GateKeeper ★★
()
Ответ на: комментарий от KRoN73

Можно. Например, Зимбру пилят в основном одни индусы. И, хочу заметить, проблем конкретно в жабском сервере с кириллицей (равно, как и, смею предположить, любым иным нелатиничным набором символов) не было. Они умудрились наговнокодить в другом совсем... Например, прибили в жабаскрипте разделитель полей дат гвоздями, и угадайте, какой.

GateKeeper ★★
()
Ответ на: комментарий от kelyar

А я слышал, что в ПХП проблемы с юникодом. Это правда?

Пи...дят.

r_asian ★☆☆
()
Ответ на: комментарий от psp13

Почитай /.

Народ там требует давно, но никто не чешется. Имеем геморрой даже там со всякими спецсимволами и т.д.

Deleted
()
Ответ на: комментарий от Eddy_Em

Так что, если сайт с юникодом и содержит в основном текстовую информацию, он будет примерно в 2 раза «тяжелее», чем на нормальной восьмибитной кодировке

Согласен. Однако, в нормальной восьмибитной кодировке нету, к примеру, кириллицы. Соответственно, если ориентироваться на русскоязычную аудиторию, то UTF-8 (в силу ее обратной совместимости с нормальной восьмибитной кодировкой) оптимальна

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

Однако, в нормальной восьмибитной кодировке нету, к примеру, кириллицы.

Ой, да ладно: уйма сайтов рунета - на кошерной КОИ8 (взять, к примеру, сайт нашей обсерватории) или некошерной cp1251. И таки русские буковки там есть.

Eddy_Em ☆☆☆☆☆
()

нецелесообразно. места больше занимает, большая нагрузка на процессор, преимуществ особых не даёт... да мы и не англоговорящие, так что забей.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Кстати, интересно было бы посмотреть статистику: сколько отечественных серверов имеют КОИ8, сколько - CP866, сколько - CP1251, сколько - UTF8 и сколько UTF16...

Eddy_Em ☆☆☆☆☆
()

Поразительно, в 2012 году люди всерьёз обсуждают, использовать ли UTF-8, как будто есть альтернатива. А её нет. Будущее уже здесь. UTF-8 - стандарт де-факто, хотите вы этого или нет. Использовать cp866/koi8/cp1251 - как использовать debian etch: можно, но бессмысленно.

anonymous
()
Ответ на: комментарий от Eddy_Em

Ой, да ладно: уйма сайтов рунета - на кошерной КОИ8 (взять, к примеру, сайт нашей обсерватории) или некошерной cp1251. И таки русские буковки там есть.

Мы вроде про нормальную восьмибитную кодировку говорим. Причем тут koi8 и cp1251?

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

Мы вроде про нормальную восьмибитную кодировку говорим. Причем тут koi8 и cp1251?

Это - нормальные восьмибитные кодировки. 1251 даже лучше в плане сортировки, но КОИ8 как-то «ламповее», что ли. Пока есть поддержка такой локали, буду пользоваться ею. Как поддержки не станет - либо сделаю, либо буду пользоваться старьем, пока будет возможность...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

Использовать cp866/koi8/cp1251 - как использовать debian etch: можно, но бессмысленно.

Сайты на cp866/koi8/cp1251 есть → использовать имеет смысл.

Тем паче, что CGI всякие писать под восьмибитную кодировку проще: не надо заморачиваться с идиотскими юникодными приколами. 1 буква == 1 байт — и никаких проблем.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от PolarFox

Кстати не только в жабе, в цэрешетке и кутях тоже 2-байтные чары. Юникод символы шире 2 байт в них представляются т.н. суррогатными парами символов, что мне слегка выносит моск.

anonymous
()
Ответ на: комментарий от Eddy_Em

нормальной восьмибитной кодировке.

восьмибитной кодировке.

нормальной

Ну ты понел.

LongLiveUbuntu ★★★★★
()

Для возможности расширения аудитории в будущем рекомендую: 1. Выучить JSP, 2. Переехать с Народа куда подальше, 3. Учиться, учиться и учиться.

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от qulinxao

Похоже, что поциэнт решил потроллить. Или поклоуничать.

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от psp13

вычисление длины строки в UTF-8 намного медленнее чем ASCII строки

о, наивный чебурашка-сан, Вы не поясните ли что означает слово «намного» и во что это выльется в терминах реальных таймингов?

shty ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

Кто-нибудь её похоронит уже?

Явно не ты и не твои дети...

И да, как быть китайцам, индусам и прочим узкоглазым?

Мы про русских говорим на русскоязычном сайте, между прочим. А проблемы китайцев, индусов и т.п. меня не колышат: ССЗБ, раз нормальный алфавит придумать не могли.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

А проблемы китайцев, индусов и т.п. меня не колышат: ССЗБ, раз нормальный алфавит придумать не могли.

толстовато, бро

shty ★★★★★
()
Ответ на: комментарий от shty

Кстати, да: strcmp в быдлоюникоде вычисляется медленнее, т.к. memcmp работает на большее количество символов.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от shty

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Вы сейчас высказываетесь с позиции какого-нибудь необременённого знаниями американца, если что, для образованного человека такое действо вообще-то должно быть постыдно

shty ★★★★★
()
Ответ на: комментарий от Eddy_Em

ССЗБ, раз нормальный алфавит придумать не могли.

Никогда про различия между цивилизациями не слышал? Или считаешь, что всех нужно грести под одну гребёнку? Ну тогды ты - опасный идиот, что впрочем неудивительно по отношению к нынешнему «учёному».

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от shty

Как говорится, проблемы негров шерифа не волнуют: придумали иероглифическое письмо - ну и пусть страдают себе, а нам восьмибитной кодировки за глаза хватит.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.