[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: UTF-8 VS CP1251
redreem
В общем тема скорее холиварная, но для меня очень наболевшая.

До недавнего времени без проблем пользовался исключительно cp1251 и ЕДИНСТВЕННАЯ заморочка, которая возникала - это необходимость iconv при приеме ajax запросов. ВСЁ!

Регулярное капанье на моск инет-инфы о том, что utf-8 лучше всетаки заставило меня попробовать ентот фрухт. Конвертация моего двига и базы на utf-8 заняла не более часа, тут проблем не возникло. Проблемы начались потом!

Все "нормальные" методы работы со строками, ну например такие как chr(), ord(), strlen да и вообще все, понятно что надо заменять на multibyte версии, но во первых не для всех есть мультибайт-аналоги, во вторых даже замена порой превращается в танец с бубном, пока врубишься что еще надо дать параметрам для корректной обработки. например я так и не понял зачем мне, чтобы работали mb_strlen() и mb_substr() нужно принудительно им говорить об utf-8! (mb_detect_order() - как мертвому припарка).

Еще пример - если страница внешнего сайта в cp1251, то забрав ее к примеру курлом или просто file_get_content, mb_detect_encoding определяет ее все равно как utf-8! А почему???

Вообще, приводить примеры можно еще долго, смысл в том, что переход на utf-8 вовсе не упростил жизнь, а добавил кучу новых проблем.

Кто-то скажет "ну надо просто 1 раз разобраться и все".
Отвечу: а зачем, если на cp1251 у меня этих проблем вообще небыло!!!

Ради интереса погуглил: "почему utf-8 лучше" - ничего вразумительного, все статьи полны лишь идеологических громких слов и САААМЫЙ весомый аргумент - что в utf-8 больше символов! Да мне вообще не всралось 100 000 символов, на cp1251 ниразу не возникла потребнось в каких-то лишних сотнях каких-то ненужных символов! Все типографические символы без проблем лепились через &...;

Вот и собственно вопрос: в чем прикол???



Спустя 6 минут, 49 секунд (4.02.2012 - 13:00) VELIK505 написал(а):
Моё мнение.
Ничем не лучше. И вроде как даже помедленне чем 1251.
Да имется проблема на 1251 с аяксом и так же если использовать api яндекс метрики я столкнулся с такой проблемой но в итоге всё очень легко решаемо.
У меня дедик и если мне надо настроить сервак под utf-8 или 1251 это не занимает и труда.
Разницы не вижу если честно.

Спустя 1 минута, 16 секунд (4.02.2012 - 13:01) Invis1ble написал(а):
redreem
Цитата
нужно принудительно им говорить об utf-8! (mb_detect_order() - как мертвому припарка).

mb_internal_encoding()
Цитата
mb_detect_encoding определяет ее все равно как utf-8! А почему???

потому что mb_detect_encoding() - редкостное Г.
Цитата
Отвечу: а зачем, если на cp1251 у меня этих проблем вообще небыло!!!

не было проблем - так не переходил бы тогда smile.gif

Спустя 1 минута, 16 секунд (4.02.2012 - 13:02) inpost написал(а):
redreem
mb_internal_encoding()... опоздал на секундочку...

Спустя 2 минуты, 55 секунд (4.02.2012 - 13:05) Invis1ble написал(а):
Цитата
Вот и собственно вопрос: в чем прикол???

прикол в том, что иногда требуется интернационализация например

Спустя 33 секунды (4.02.2012 - 13:06) inpost написал(а):
redreem
Ради Аякса. Ради того, что ты захочешь, скорее всего, работать с большим количеством сайтов с большим числом клиентов мультиязычным.

Спустя 31 секунда (4.02.2012 - 13:06) inpost написал(а):
Invis1ble
ВТОРОЙ РАЗ ОПОЗДАЛ!!! ТЫ меня дважды с одинаковыми ответами опережаешь...

Спустя 48 секунд (4.02.2012 - 13:07) Invis1ble написал(а):
inpost
бывает biggrin.gif

Спустя 5 минут, 14 секунд (4.02.2012 - 13:12) redreem написал(а):
1. т.е. если сайт исключительно для русскоязычного контингента - utf ненужен?

2. если сайт организован в cp1251, но просто сделана english версия (тупо заменены текста), то ведь англоязычные пользователи с виндой у которой страница не установлена в windows-1251 все равно ведь увидят все нормально?

я как-то пока не прогнозирую необходимость делать сайт для арабов или китайцев. получается для русского и английского cp1251 предостаточно?

Спустя 3 минуты, 44 секунды (4.02.2012 - 13:16) inpost написал(а):
redreem
Версия то английская, но, порой, данные приходят с спец.символами, допустим http://en.wikipedia.org/wiki/S%C3%A3o_Paulo , вот с таким проблемы будут, хотя английский сайт.

Сейчас не прогнозируешь, а потом как понадобиться - там вечно один и тот же геморой будет. Так лучше столкнуться с ним на уровне "учебы", чем в момент необходимости появиться в заднице smile.gif

Спустя 1 минута, 52 секунды (4.02.2012 - 13:18) Invis1ble написал(а):
Цитата
т.е. если сайт исключительно для русскоязычного контингента - utf ненужен?

получается необязателен
Цитата
англоязычные пользователи с виндой у которой страница не установлена в windows-1251 все равно ведь увидят все нормально?

не совсем понял
Цитата
я как-то пока не прогнозирую необходимость делать сайт для арабов или китайцев. получается для русского и английского cp1251 предостаточно?

см. п.1, хотя лучше прицеливаться на будующее, имхо

Спустя 2 минуты, 39 секунд (4.02.2012 - 13:20) redreem написал(а):
понятно. всем спасибо за мнения.
я сейчас делаю лексический анализатор, который возится исключительно в русских символах, большой объем вычислений идет именно с кодами символов и выборкой символов из слова, и честно говоря упарился 30-40% времени тратить на учет utf8. буду делать его на 1251.

Спустя 1 час, 4 минуты, 46 секунд (4.02.2012 - 14:25) redreem написал(а):
кому интересно: перевел алгоритм с utf8 на cp1251 - скорость обработки текста возросла в 3-5 раз!

Спустя 5 минут, 50 секунд (4.02.2012 - 14:31) inpost написал(а):
redreem
То есть в 3 раза быстрее оказался utf ?

Спустя 29 секунд (4.02.2012 - 14:31) redreem написал(а):
нет, cp1251 быстрее

Спустя 3 секунды (4.02.2012 - 14:31) neadekvat написал(а):
redreem, что интересно - вот работаю я с utf-8, и вообще не сталкиваюсь с проблемой отсутствия родной поддержки этой кодировки в php - потому что привык, все на автомате делаю.
А на счет "Зачем?". Я, например, работаю не только с русскоязычными сайтами. Есть и немецкий и прочее. А как я буду смотреть, правильно там или неправильно текст на немецком обрабатывается? А тут я уже с Юникодом надрочился - и я просто не заморачиваюсь.
Более того, большинство фреймворков, библиотек и пр. пишутся именнов utf-8, и, дабы избежать проблем совместимости, проще тоже поддерживать utf-8 (как и комментарии на английском писать).

Спустя 1 минута, 1 секунда (4.02.2012 - 14:32) Invis1ble написал(а):
Цитата
Более того, большинство фреймворков, библиотек и пр. пишутся именнов utf-8, и, дабы избежать проблем совместимости, проще тоже поддерживать utf-8 (как и комментарии на английском писать).

+1

Спустя 3 минуты, 48 секунд (4.02.2012 - 14:36) redreem написал(а):
neadekvat
я согласен что делать на utf "рядовые" задачи - это лучше и универсальнее.
ты попробуй поразбирать русский текст на слова, символы и символосочетания, как-нибудь их "поучитывать", посохранять, посортировать. мне сейчас исключительно это надо.

Спустя 6 минут, 21 секунда (4.02.2012 - 14:43) neadekvat написал(а):
Цитата (redreem @ 4.02.2012 - 15:36)
ты попробуй поразбирать русский текст на слова, символы и символосочетания, как-нибудь их "поучитывать", посохранять, посортировать

А с чего ты взял, что я таким не занимался? Пробовал и вполне успешно.
А ты попробуй разобраться docx-файл на php в кодировке cp-1251, вот это действительно будет интересно smile.gif

Спустя 44 минуты, 51 секунда (4.02.2012 - 15:27) redreem написал(а):
вопрос не об "успехе", а об оптимальном выборе для задачи.

Спустя 4 минуты, 16 секунд (4.02.2012 - 15:32) inpost написал(а):
redreem
Показал бы тестируемый участок с utf и с win, мы бы тоже сравнили бы smile.gif

Спустя 2 минуты, 7 секунд (4.02.2012 - 15:34) redreem написал(а):
inpost
неполучится, у меня класс здоровый, я говорю о комплесной производительности по обработке всего текста, а не о "цикле" с одной операцией. класс выкладывать не буду.

в качестве примера проверял просто разбор 2-х страниц с разных сайтов, в том числе и phpforum - стартовую.

1950 слов
с utf - 100-110 сек.
с cp1251 - 20 сек.

проверял сайт с 500 словами на странице

с utf - 12 сек.
с cp1251 - 4 сек.

Спустя 6 минут, 13 секунд (4.02.2012 - 15:40) inpost написал(а):
redreem
А тебе лично не интересно, какая конкретно функция замедляет процесс? Возьми и проверь каждое отдельное действие на скорость обработки, может где-то в нём и зарыта корова.

Спустя 45 секунд (4.02.2012 - 15:41) inpost написал(а):
И да, наш пхп форум на win-1251, понятное дело, что для работы с ним его надо переводить в ЮТФ, в связи с этим и замедление в скорости обработки.

Спустя 3 минуты, 54 секунды (4.02.2012 - 15:45) redreem написал(а):
inpost
на данном этапе мне важнее добить логику.
оптимизация и версии под кодировки - это следующий этап.

Спустя 16 минут, 42 секунды (4.02.2012 - 16:01) Winston написал(а):
Цитата (redreem @ 4.02.2012 - 11:53)
mb_detect_encoding определяет ее все равно как utf-8

Насчет mb_detect_encoding, http://habrahabr.ru/blogs/php/107945/

Спустя 3 минуты, 44 секунды (4.02.2012 - 16:05) redreem написал(а):
Winston
да, этот вопрос изучал несколько месяцев назад (proof smile.gif ) и статью эту тоже изучал. спасибо, пока не актуально.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.