#UTF16

2026-01-05

Ну всё, пора закапывать UTF-8

Здравствуйте, меня зовут Дмитрий Карловский и я... серийный убийца устоявшихся стандартов. Сегодня я выследил и нанёс критический урон UTF-8. И сейчас я расскажу, как я его переиграл и уничтожил новым стандартом кодирования текста — Unicode Compact Format . No, God! Please, No, NO!

habr.com/ru/articles/983042/

#utf8 #utf16 #utf32 #ucs2 #ucs4 #scsu #bocu1 #utfc #ucf #$mol

2025-12-19

UTF-8 is everywhere in modern software. Unfortunately, clear explanations of how it works and why it matters are quite rare, even if those should really be part of every "intro to programming" course. Most courses just deal with text processing by saying "here is the ASCII table, every letter is mapped to 1 byte, and texts are just arrays of letters" like we're stuck in the 90's.

This is the best explanation I've seen about #UTF8, #UTF16 and #Unicode: https://youtube.com/watch?v=vpSkBV5vydg . I highly recommend watching it if you write software but still have doubts about how "💩" is represented in memory.

#computerprogramming #programming #compsci #learnprogramming #emoji #emojis #emoticon

2025-10-15

[Перевод] Освоение Unicode в Java: создаём на Quarkus REST API, готовый к глобальной аудитории

В этом руководстве мы разберем непонятности вокруг Unicode и узнаем, как строить надёжные, интернациональные Java-приложения. Разберём теорию, укажем на подводные камни, а затем соберём «Глобальный сервис приветствий» на Quarkus, который переживёт весь хаос реального текста. К концу статьи вы разберётесь с тем, – как устроен Unicode и как Java на самом деле хранит текст; – почему длина строки и перебор символов сложнее, чем кажется; – как нормализация предотвращает неприятные несоответствия; – как настроить REST-сервис и базу данных для безопасной работы с Unicode. Unicode без боли

habr.com/ru/companies/otus/art

#unicode #Quarkus #Java #UTF8 #UTF16 #графемные_кластеры #нормализация #nfc #сортировка_по_локали

2025-09-26

How a Single ß Can Break Everything
Friday, September 26, 2025 14:45 GMT+02:00, Dependency Den
developer.android.com/referenc
#unicode #utf8 #utf16 #droidcon #dcbln25 #fahrplan @droidcon

Inautiloinautilo
2025-09-08


Text lengths with ‘Intl.Segmenter’ API · Human-friendly character counting in JavaScript ilo.im/166lco

_____
IntlSegmenter

Andrey {.ru account};darkcat09@dc09.ru
2025-08-06

Всё же пришлось поизучать юникод.

Два четырёхзначных кодпоинта могут идти в суррогатной паре UTF-16, тогда декодировать их можно только вместе (там какой-то алгоритм с битовыми операциями).
То есть мне нужно обрабатывать такую ситуацию, когда в буфер попал первый кодпоинт из пары, без второго, и слать декодеру часть буфера до начала этой сломанной пары.
Иначе декодер выдаст не то. Склеивать полученные байты не поможет.

Пример: \u1F4AF — это эмоджи [💯]
В жсоне для кодирования юникода применяется UTF-16-BE, видимо чтобы количество цифр в кодпоинте всегда было 4 для удобства парсинга (удобства!! спасибо, блин).
Получаем "\ud83d\udcaf".
\ud83d — первый символ в суррогатной паре, leading UTF-16 surrogate, его можно определить по диапазону от 0xD800 до 0xDBFF включительно.
\udcaf — второй символ в паре, trailing UTF-16 surrogate, диапазон от 0xDC00 до 0xDFFF включительно.

Если парсер смог прочитать только первый кодпоинт 0xD83D и дошёл до конца буфера, значит, trailing surrogate мы не считали, декодировать кодпоинт не получится. Вернём его обратно к вызывающему (см. переменную leftovers), чтобы он добавил кривой жсон-эскейп с этим кодпоинтом в буфер в следующий раз, когда будет читать байты дальше. А щас декодируем только часть строки до \ud83d, не захватывая этот эскейп.

Багфикс:
https://git.dc09.ru/DarkCat09/proxishot/commit/e4873223f5

Разговор с самим собой:
https://git.dc09.ru/DarkCat09/proxishot/issues/1

#unicode #utf16 #json #parser

2025-02-23

Imutin kaikki #Facebook'in julkaisuni – ainakin jos #Meta'a uskotaan. Pyysin #JSON-muodossa toivossa, että tulisi sutjakammin. Hieman ongelmia aiheutti JSONin koodaus: merkkijonot ovat validia #UTF8:aa mutta JSON ilmeisesti olettaa #UTF16:n, joten vaaditaan mukamuunnos eestaas; apua löytyi #StackOverflow’sta. Aikaleimat sentään olivat standardi-#POSIX’ia.

En tiedä, kuinka täydellinen ”arkisto” on, mutta ainakin jotakin saisi talteen, kun lähtee lätkimään. #some #atkjuttuja

2024-07-18

LibreOffice writer is rendering the character correctly ​:neofox_woozy:​

#weather #icon #symbol #LibreOffice #LibreOfficeWriter #typography #utf #utf16 #utf32

Haze character rendered in LibreOffice Writer
2024-06-19

Really good and interesting article about the problem of calculating the length of strings.

#unicode #utf8 #utf16 #utf32 #programming

hsivonen.fi/string-length/

Interesting Characters (UTF-16, utf-8, Unicode, encodings)

video.infosec.exchange/w/nxfiD

2024-05-02

[Перевод] Нельзя предполагать, что все используют UTF-8

Как вычислять кодировку при помощи статистики Люди говорят на бесчисленном количестве разных языков. Эти языки не только несовместимы между собой, но и представляют огромную трудность при транспиляции в среде исполнения. К сожалению, все попытки стандартизации провалились. По крайней мере, в таком положении вещей есть, кого винить: Бога. Ведь именно он вынудил человечество говорить на разных языках из-за древнего спора о строительстве объекта недвижимости . Однако человечество может винить себя за то, что сложности в общении испытывают компьютеры . И одна из самых больших проблем одновременно является самой простой: компьютеры не договорились о том, как записывать буквы двоичным кодом.

habr.com/ru/companies/ruvds/ar

#ruvds_переводы #unicode #кодировки_текста #win1252 #koi8 #utf8 #utf16 #определение_кодировок

Felix Palmen 📯zirias@techhub.social
2024-01-28

Just released dos2ansi v0.4, with lots of #DOS #codepage s supported and a testmode to display them.

The next nice feature would be to use the actual terminal capabilities if output goes there. Very simple on *nix-like systems (#Linux, #FreeBSD, ...), just link #curses and use the termcap functions.

Thinking about #Windows again, either I keep relying on #UTF8 support (since #win7 IIRC? and still a bit buggy) and #ANSI sequences support (since #win10) .... OR I attempt to use the native #Console #API there (using special functions to write in #UTF16 and other special functions to set colors, which would require a major refactoring first 🙄)

github.com/Zirias/dos2ansi/rel

Felix Palmen 📯zirias@techhub.social
2024-01-25

New pre-release of dos2ansi: v0.2

* Works on #Windows, win32 binary (cross-compiled on #FreeBSD) attached
* Selectable input #codepage (so far only #cp437, #cp850 and #cp858)
* Selectable output format, #utf8, #utf16 or #utf16le, with or without #BOM

Still a few things to add, e.g. use #termcap/#terminfo or Windows Console API for "color output" when applicable ... we will see 😎

github.com/Zirias/dos2ansi/rel

Felix Palmen 📯zirias@techhub.social
2024-01-24

@wader I had a quick look at your code now and see you're already "handling" this using wmain() and doing the conversion. So, this seems to be a bit mysterious.

Is all your output #utf8? Then adding SetConsoleOutputCP(CP_UTF8); should fix output for anyone without requiring them to use chcp first, but I don't see why specifically argv values continue to have a problem. It probably needs some experimentation 😞

Text encoding on #Windows is so borked because they jumped on #Unicode early using #UCS2 and now they need to handle everything in #UTF16 stored in 16bit wide wchar_t ... and also want to remain compatible with any older crap ... 🙈

2024-01-23

[Перевод] Важные аспекты Unicode, о которых должен знать каждый разработчик JavaScript

Должен признаться: на протяжении очень долгого времени я испытывал страх перед Unicode. Когда была необходимость в работе с Unicode, я предпочитал искать альтернативные пути решения, поскольку не совсем понимал, что делаю. Я старался избегать работы с Unicode до тех пор, пока не столкнулся с проблемой, требующей глубокого понимания этого стандарта, а других вариантов решения просто не было. Приложив определенные усилия, прочитав кучу статей — я постепенно начал понимать что к чему, и это оказалось не так уж трудно. Хотя, некоторые статьи приходилось перечитывать раза по 3. Как оказалось, Unicode — это универсальный и удобный стандарт, но работать с ним может быть непросто из-за множества абстрактных терминов. Если у вас есть пробелы в понимании Unicode, то сейчас самое подходящее время их заполнить! Заварите себе вкусный чай или кофе ☕. И давайте погрузимся в удивительный мир абстракций, символов, астралов (astrals) и суррогатов (surrogates). В этой статье объясняются основные концепции Unicode, которые создадут необходимую базу для работы с ним. Вы также узнаете, как JavaScript взаимодействует с Unicode и какие трудности могут возникнуть на этом пути. А также, каким образом новые функции из ECMAScript 2015 могут помочь в решении этих проблем. Готовы? Давайте начнем!

habr.com/ru/companies/timeweb/

#timeweb_статьи_перевод #javascript #webразработка #webdevelopment #unicode #utf16 #utf8 #юникод

2024-01-23

Суперсемейка против Unicode: Эластика и ее противник гибкий UTF-8

Кодировка символов – это про то, как символы которыми мы пишем наши сообщения выглядят в двоичном коде. В мире существует множество кодировок, но самые популярные из них, это; ASCII – это самая первая кодировка в мире, она была создана в Америке. Собственно благодаря ей, 8 бит равны 1 байт. UTF-8, 16 и 32 – данные кодировки были созданы организацией Unicode (Юникод). Если по простому, то они это то же самое что и ASCII, но более вместительные, что означает, что они занимают больше памяти. Все бы ничего, легкая тема, но есть одно но – кодировка UTF-8 имеет, как по мне, гениальную особенность: она умеет "растягиваться". То есть адаптироваться под большое кол-во символов.

habr.com/ru/articles/788230/

#unicode #utf8 #utf16 #utf32 #ascii #ram #byte #css #encode #computer_science

Inautiloinautilo
2023-10-03


The minimum developers must know about Unicode in 2023 · What is Unicode, and how do you use UTF-8 correctly? ilo.im/15aq66

_____

2023-10-01

Today is a Unicode day.

#unicode #utf8 #utf16 #utf32

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst