home.social

#utf16 — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #utf16, aggregated by home.social.

fetched live
  1. Как (не) перевернуть строку, или Ох, уж этот Unicode

    Это текстовая версия доклада с Java Rock Star Meetup, с которым выступал Александр Ланцов — ведущий разработчик Мир Plat.Form. Если вы больше любите смотреть видео, то смотрите запись доклада на YouTube или VK Видео . Читать далее 🔍

    habr.com/ru/companies/nspk/art

    #java #unicode #utf8 #utf16 #кодировки #обработка_строк #emoji #суррогатные_пары #графемные_кластеры

  2. Как (не) перевернуть строку, или Ох, уж этот Unicode

    Это текстовая версия доклада с Java Rock Star Meetup, с которым выступал Александр Ланцов — ведущий разработчик Мир Plat.Form. Если вы больше любите смотреть видео, то смотрите запись доклада на YouTube или VK Видео . Читать далее 🔍

    habr.com/ru/companies/nspk/art

    #java #unicode #utf8 #utf16 #кодировки #обработка_строк #emoji #суррогатные_пары #графемные_кластеры

  3. Как (не) перевернуть строку, или Ох, уж этот Unicode

    Это текстовая версия доклада с Java Rock Star Meetup, с которым выступал Александр Ланцов — ведущий разработчик Мир Plat.Form. Если вы больше любите смотреть видео, то смотрите запись доклада на YouTube или VK Видео . Читать далее 🔍

    habr.com/ru/companies/nspk/art

    #java #unicode #utf8 #utf16 #кодировки #обработка_строк #emoji #суррогатные_пары #графемные_кластеры

  4. Ну всё, пора закапывать 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

  5. Ну всё, пора закапывать 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

  6. Ну всё, пора закапывать 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

  7. The ancient symbol of Chaos is not represented in Unicode and that makes me mad.

    Yes, for the symbol of Law We have ↑, but there is no symbol in which eight arrows all point from a common origin, each at one of the cardinal or intercardinal compass directions.

    The best we have is ☸ but it's not made of arrows, is too circley, and is already taken by some stupid supposedly """ancient""" religion.

    BAH/Humbug!

    #arioch #chao #chaos #elric #fiction #michaelmoorcock #moorcock #pulp #pulpfiction #sacredchao #tuches #tukhes #tus #ucs #unicode #universalcodedcharacterset #utf16 #utf32 #utf64 #utf8 #wtf69

  8. [Перевод] Освоение 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 #сортировка_по_локали

  9. [Перевод] Освоение 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 #сортировка_по_локали

  10. [Перевод] Освоение 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 #сортировка_по_локали

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

    Два четырёхзначных кодпоинта могут идти в суррогатной паре 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

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

    Два четырёхзначных кодпоинта могут идти в суррогатной паре 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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

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

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

    habr.com/ru/companies/ruvds/ar

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

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

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

    habr.com/ru/companies/ruvds/ar

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

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

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

    habr.com/ru/companies/ruvds/ar

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

  21. 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

  22. 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

  23. 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

  24. 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

  25. Just released dos2ansi v0.4, with lots of 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, , ...), just link and use the termcap functions.

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

    github.com/Zirias/dos2ansi/rel

  26. 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

  27. 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

  28. 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

  29. 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

  30. New pre-release of dos2ansi: v0.2

    * Works on , win32 binary (cross-compiled on ) attached
    * Selectable input (so far only , and )
    * Selectable output format, , or , with or without

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

    github.com/Zirias/dos2ansi/rel

  31. @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 ... 🙈