170 похожих чатов

4 ответов

16 просмотров

Это вообще строка из четырёх символов или число в зависимости от того, как прочитать.

Egor Suvorov
Это вообще строка из четырёх символов или число в ...

Я сейчас не троллю и не стебусь, если что. Есть несколько уровней в юникоде. * На нижнем — кодировка. Преобразует байты в code points. UTF-8 — одна из таких кодировок. Например, code point U+008D она запишет как два байта (октета). Code point U+007A она запишет как один байт 7A — специально так проектировалась, чтобы для первых 127 code point'ов выдавать байты, совпадающие с ASCII. Некоторые code point'ы могут записываться в UTF-8 шестью байтами. Есть и другие кодировки: UTF-16BE, UTF-16LE (ещё иногда бывает byte order mark), UTF-32. Например, в UTF-16 все code point занимают чётное количество байт — два или четыре (это ещё называют "суррогатными парами" из двух code unit, по два байта каждый). Вывод: по байту, не зная кодировки, нельзя понять, что это. * Конкретно в UTF-8 байты со значением не между 0-127 нельзя понять, частью какого code point он является. * Дальше каждый code point — это на самом деле страшная вещь. Их можно комбинировать вместе и получать символы. Например, есть минимум два способа записать кириллическую букву "ё" — одним code point или двумя ("е" + "две точки"). В других языках сложнее (смотри ссылку выше). * Дальше можно объединять code point в графемные кластеры. Это творческий процесс: например, в корейском в кластер соберутся несколько букв, которые образуют один-два слога. Просто они записываются примерно как один квадратик. В арабской вязи всё ещё веселее. Не существует никакой концепции "символа", которая бы переносилась между языками. Даже в европейских языках бывают сюрпризы: одна "заглавная" буква "ß" в нижнем регистре превращается в две — "ss". Поэтому нельзя говорить про "символы" в отрыве от конечной задачи преобразования текста, которую мы решаем. Даже конкатенировать так просто нельзя, привет от LTR-RTL marks.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
Карта сайта