NLINKER_RUST Telegram 1855
Когда-то наши потомки будут рыдать горючими слезами от того, что наворотили в Юникоде. Самая главная статья, которую надо прочесть, это
https://manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points/

Есть несколько уровней в юникоде.

* На нижнем — кодировка. Преобразует байты в 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.

Ссылки по теме:
https://manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points/

https://manishearth.github.io/blog/2017/01/15/breaking-our-latin-1-assumptions/

https://hsivonen.fi/string-length/



tgoop.com/nlinker_rust/1855
Create:
Last Update:

Когда-то наши потомки будут рыдать горючими слезами от того, что наворотили в Юникоде. Самая главная статья, которую надо прочесть, это
https://manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points/

Есть несколько уровней в юникоде.

* На нижнем — кодировка. Преобразует байты в 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.

Ссылки по теме:
https://manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points/

https://manishearth.github.io/blog/2017/01/15/breaking-our-latin-1-assumptions/

https://hsivonen.fi/string-length/

BY Linker Unsafe




Share with your friend now:
tgoop.com/nlinker_rust/1855

View MORE
Open in Telegram


Telegram News

Date: |

Although some crypto traders have moved toward screaming as a coping mechanism, several mental health experts call this therapy a pseudoscience. The crypto community finds its way to engage in one or the other way and share its feelings with other fellow members. Telegram channels enable users to broadcast messages to multiple users simultaneously. Like on social media, users need to subscribe to your channel to get access to your content published by one or more administrators. For crypto enthusiasts, there was the “gm” app, a self-described “meme app” which only allowed users to greet each other with “gm,” or “good morning,” a common acronym thrown around on Crypto Twitter and Discord. But the gm app was shut down back in September after a hacker reportedly gained access to user data. 4How to customize a Telegram channel? Just as the Bitcoin turmoil continues, crypto traders have taken to Telegram to voice their feelings. Crypto investors can reduce their anxiety about losses by joining the “Bear Market Screaming Therapy Group” on Telegram.
from us


Telegram Linker Unsafe
FROM American