powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Юникод и utf8
25 сообщений из 172, страница 1 из 7
Юникод и utf8
    #39707192
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юнико́д активно всем навязывали и наконец практически всем навязали.

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

А utf8 нарушает представление строки в виде массива символов, на что рассчитаны все алгоритмы с начала эры программирования.

Причем англосаксы то себе неудобств этим utf8 создали намного меньше, чем другим, т. к. их символы в нем записываются в один байт. Вероятно, многие из них даже не учитывают возможную многобайтовость символов и работают с ними как с одиночными байтами.

Зато все другие языки низвели до иероглифов.

Как вы относительсь к юникоду и utf8? По мне что то, что другое - зло.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707234
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewС какой стати мы должны платить увеличением объема строк в два раза ...
А кто собственно заставляет? CP1251 кто запретил?
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707282
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я заметил что Евгений очень часто поднимает проблемы, которые впоследствии оказывается не проблемами.


P.S. ПТ закрылся а штормит ещё...
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707348
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewКак вы относительсь к юникоду и utf8? По мне что то, что другое - зло
Хорошо относимся
Кроме кириллицы есть latin1

Если бесит - попейте успокоительного
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707349
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene New,

Используйте UTF16, пусть англосаксы тоже платят :)
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707352
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene New и наконец практически всем навязали.

Да, мы работали над этим, спасибо, что оценили наши усилия. Активно агитирую Вас отказаться раз и навсегда от использования однобайтовых кодировок. Как говорится - "Однобайтовых кодировок больше нет, Вы держитесь здесь, Вам всего доброго, хорошего настроения и здоровья!"
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707356
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAP,
Активно агитирую Вас отказаться раз и навсегда от использования однобайтовых кодирово
Зачем мне это делать? Есть рациональные причины?

Если бесит - попейте успокоительного
В таких советах не нуждаюсь.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707396
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene New
А utf8 нарушает представление строки в виде массива символов, на что рассчитаны все алгоритмы с начала эры программирования..

Расширю утверждение.

Префиксное кодирование нарушает преставление сжатого потока в виде массива байтов.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707411
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваши страдания не соответствуют реалиям жизни:
Код: plaintext
1.
2.
3.
4.
5.
           2326241 ГК РФ CP1251.txt
           4231334 ГК РФ UTF-8.txt	+82%
            470063 ГК РФ CP1251.zip
            565594 ГК РФ UTF-8.zip	+20%
            350556 ГК РФ CP1251.7z
            384932 ГК РФ UTF-8.7z	+10%
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707437
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВаши страдания не соответствуют реалиям жизни:
Код: plaintext
1.
2.
3.
4.
5.
           2326241 ГК РФ CP1251.txt
           4231334 ГК РФ UTF-8.txt	+82%
            470063 ГК РФ CP1251.zip
            565594 ГК РФ UTF-8.zip	+20%
            350556 ГК РФ CP1251.7z
            384932 ГК РФ UTF-8.7z	+10%

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

+82% потому что кроме букв есть еще пробелы, переводы строк, знаки препинания и т.д., которые однобайтовые в UTF-8.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707453
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewС какой стати мы должны платить увеличением объема строк в два раза из-за китайцев, у которых ущербная письменность. Тогда как русский алфавит прекрасно умещается в один байт.
Китайцам кстати это не особо помогло, т.к. в двух байтах 65536 значений, а в юникоде уже более миллиона символов, т.е. в двухбайтовый UTF-16 все не влезут и некоторые символы занимают по два двубайта.

Думаю исторически начиналось с объединения европейских языков: немецкий, испанский, итальянский и т.д. Тут два байта на символ с избытком хватает.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707465
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В стандартах юникода - не только языки. Там технические символы для различных направлений в науке.
В медиа. В исскусстве.

Кроме того стандарт определяет символов больше чем 65536. То что мы здесь обсуждаем это подмножество
т.к. нулевой плоскости 0-Plane.

Кроме того в стандарте существуют белые пятна. И ЕМНИП некоторые диапазоны все еще находятся в состоянии
беты. Тоесть диапазон есть и используется но комитет чего-то там правит. Впрочем пруфы по последнему
я пока не могу найти.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707476
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tподнят вопрос не только передачи, но и произвольного доступаВы не можете использовать произвольный доступ при любой кодировке юникода.
Просто потому, что составные символы - реально существуют.
Даже в (современном) русском алфавите - два составных символа. Это если не брать в расчёт братьев славян.

P.S.
Насколько я знаю, люди вполне успешно векторизуют (SSE2 и все дела) алгоритмы, работающие с UTF-8. Несмотря на всю её "разноширинность".
Поэтому моя личная кочка зрения предельно проста: любители оптимизировать должны оставить это занятие профессионалам.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707487
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovDima Tподнят вопрос не только передачи, но и произвольного доступаВы не можете использовать произвольный доступ при любой кодировке юникода.
Просто потому, что составные символы - реально существуют.
Использование юникода не ограничивается текстовыми файлами. Пусть это будет таблица БД с текстовыми полями.

Basil A. SidorovПоэтому моя личная кочка зрения предельно проста: любители оптимизировать должны оставить это занятие профессионалам.
Мне тоже пофиг на кодировку.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707489
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИспользование юникода не ограничивается текстовыми файлами. Пусть это будет таблица БД с текстовыми полями.Какая разница, в какой контейнер упакован текст?
Составные символы от этого никуда не исчезают.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707490
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovDima TИспользование юникода не ограничивается текстовыми файлами. Пусть это будет таблица БД с текстовыми полями.Какая разница, в какой контейнер упакован текст?
Составные символы от этого никуда не исчезают.
Я писал про неуместность сравнения в пожатом виде 21684963
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707493
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЯ писал про неуместность сравнения в пожатом виде 21684963 А я отмечал неуместность нытья про "нарушение представления".
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707601
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот интересный кусочек OpenJDK кода. (Это из транка. Но не оригинального меркурия а зеркала что на гитхабе).

Sorry много букв под катом.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {

    /**
     * The value is used for character storage.
     *
     * @implNote This field is trusted by the VM, and is a subject to
     * constant folding if String instance is constant. Overwriting this
     * field after construction will cause problems.
     *
     * Additionally, it is marked with {@link Stable} to trust the contents
     * of the array. No other facility in JDK provides this functionality (yet).
     * {@link Stable} is safe here, because value is never null.
     */
    @Stable
    private final byte[] value;

    /**
     * The identifier of the encoding used to encode the bytes in
     * {@code value}. The supported values in this implementation are
     *
     * LATIN1
     * UTF16
     *
     * @implNote This field is trusted by the VM, and is a subject to
     * constant folding if String instance is constant. Overwriting this
     * field after construction will cause problems.
     */
    private final byte coder;




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
    /**
     * If String compaction is disabled, the bytes in {@code value} are
     * always encoded in UTF16.
     *
     * For methods with several possible implementation paths, when String
     * compaction is disabled, only one code path is taken.
     *
     * The instance field value is generally opaque to optimizing JIT
     * compilers. Therefore, in performance-sensitive place, an explicit
     * check of the static boolean {@code COMPACT_STRINGS} is done first
     * before checking the {@code coder} field since the static boolean
     * {@code COMPACT_STRINGS} would be constant folded away by an
     * optimizing JIT compiler. The idioms for these cases are as follows.
     *
     * For code such as:
     *
     *    if (coder == LATIN1) { ... }
     *
     * can be written more optimally as
     *
     *    if (coder() == LATIN1) { ... }
     *
     * or:
     *
     *    if (COMPACT_STRINGS && coder == LATIN1) { ... }
     *
     * An optimizing JIT compiler can fold the above conditional as:
     *
     *    COMPACT_STRINGS == true  => if (coder == LATIN1) { ... }
     *    COMPACT_STRINGS == false => if (false)           { ... }
     *
     * @implNote
     * The actual value for this field is injected by JVM. The static
     * initialization block is used to set the value here to communicate
     * that this static final field is not statically foldable, and to
     * avoid any possible circular dependency during vm initialization.
     */
    static final boolean COMPACT_STRINGS;

    static {
        COMPACT_STRINGS = true;
    }

...
Рейтинг: 0 / 0
Юникод и utf8
    #39707710
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот в смежном топике по сям идет борьба с сабжем. Я имею в виду с кодировками.
http://www.sql.ru/forum/1303003/preobrazovanie-wstring-v-char-v-embedded-c
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707879
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не соответствуют реалиям жизни:

2326241 ГК РФ CP1251.txt
4231334 ГК РФ UTF-8.txt +82%


То есть +82% это не соответствие реалиям. {censored}

Вы предлагаете в zip сжимать и в полях БД, и в памяти программы и каждый раз их разархивировать. Так что ли?

Да лучше "сжать" в Cp1251 и так и использовать.
Модератор: Просьба не переходить на личности
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707883
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewТо есть +82% это не соответствие реалиям"Некоторые вещи нам непонятны не потому, что наши понятия слабы, а потому, что вещи сии не входят в круг наших понятий".

P.S.
"вам триста лет, вы выползли из тьмы".
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707885
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene New, мне кажется что внедрение utf-8 это примерно то-же самое что и ДВС после паровой машины.
Это не решение одного человека или корпорации. Это некая синергия которая сама
решила что использование utf-8 скорее выгодно чем невыгодно для современного ПО.

Тоесть это общественное коллегиальное решение. Комитет прсто пишет голимые бумажки. Он не внедряет utf-8.
Мы сами внедряем основываясь на своем опыте и на оглядке вокруг.

Если у тебя есть какие-то принципиальные доводы класса "невозможно" - то огласи их и поясни почему невозможно.

Если ты видишь какие-то performance-issues в будущем - то предоставь нам свои числовые оценки.
Насколько нас аффектит? 1% ? 10 ? или половина? Где вообще ты детектируешь проблему? В какой части API?

Я солидарен с Василием на тему того что все конвертеры кодировок уже давно завернуты
в ассемблер и закодены как интринзики.

Вобщем обрисуй нам весь ужас ситуации как ты это видишь.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707901
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все в мире глобализуется. Например попробуй залить на github исходник с камментами в 1251 - они будут нечитабельные, в utf-8 все будет по-русски.
utf-8 единая кодировка для всех языков. Не надо заморачиваться принудительным задаванием кодовой страницы прежде чем вывести текст. Да, мы привыкли к этому костылю, но это костыль.

Например в C/C++
Код: plaintext
1.
printf("Привет!");


выдаст кракозябры, т.к. исходники в 1251 а вывод в 866. Тоже привет из прошлого.

В C#
Код: c#
1.
Console.Write("Привет!");


выдаст "Привет!", т.к. utf-8 однозначно идентифицирует символы.

PS Копипаст русского текста в виндовсе из не юникодных приложений это отдельная боль (((
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707929
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВсе в мире глобализуется. Например попробуй залить на github исходник с камментами в 1251 - они будут нечитабельные, в utf-8 все будет по-русски.
utf-8 единая кодировка для всех языков. Не надо заморачиваться принудительным задаванием кодовой страницы прежде чем вывести текст. Да, мы привыкли к этому костылю, но это костыль.

Например в C/C++
Код: plaintext
1.
printf("Привет!");



выдаст кракозябры, т.к. исходники в 1251 а вывод в 866. Тоже привет из прошлого.

В C#
Код: c#
1.
Console.Write("Привет!");



выдаст "Привет!", т.к. utf-8 однозначно идентифицирует символы.

PS Копипаст русского текста в виндовсе из не юникодных приложений это отдельная боль (((
буквально неделю назад, меня попросил помочь коллега, проблема была в том, что после чтения файла и записи в другой файл, часть строки в 1 поле обрезается, так как длина полей фиксированная.
проблема была в том, что в исходном файле был символ из ANSI1251, а читали и писали файл ив UTF8. В результате этот символ после чтения\записи превращался в 2байтный и строка получала сдвиг.
Как раз, такая ситуация, как описал автор данной темы, молодежь уже просто не парится и не думает о том, какая кодировка у исходного файла. Зафигачили UTF8 и всё работало уже лет 5 без проблем, пока символ вот такой не залетел. На вопрос о том, какая исходная кодировка файла, никто ответить не может, в итоге я предложил ANSI-1252 как наиболее подходящую.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39707934
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за файл? CSV?
...
Рейтинг: 0 / 0
25 сообщений из 172, страница 1 из 7
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Юникод и utf8
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]