Size: a a a

2020 October 29

VV

Vadim Voevodin in Unreal Engine
When serializing to packages to/from disk or during networking, strings with all TCHAR characters less than 0xff are stored as a series of 8-bit bytes, and otherwise as 2-byte UTF-16 strings
источник

AR

Anton Rassadin in Unreal Engine
Psix aka Aleksandr
При переводе в char русских символов у меня получалось 2 байта, а для латиницы - 1 байт. Это соответствует utf16?
Это соответствует utf8, в котором кириллица в двухбайтовом диапазоне. Ты же в utf8 переводил.
источник

Pa

Psix aka Aleksandr in Unreal Engine
Короче, мне не важно в чём оно хранится в движке, Я всё равно перевожу в utf8, так?
источник

VV

Vadim Voevodin in Unreal Engine
Да
источник

Pa

Psix aka Aleksandr in Unreal Engine
Ну тогда моя проблема остаётся на месте - Я не могу работать с отдельными чарами, оно не собирается назад после изменения значения. И да, Я проверял, если не трогать значения - всё гуд. Но при этом не пашет даже если собирать из копии оригинального значения.
источник

AR

Anton Rassadin in Unreal Engine
Psix aka Aleksandr
Ну тогда моя проблема остаётся на месте - Я не могу работать с отдельными чарами, оно не собирается назад после изменения значения. И да, Я проверял, если не трогать значения - всё гуд. Но при этом не пашет даже если собирать из копии оригинального значения.
Ты в своём коде выше работаешь с отдельными байтами двухбайтовых символов, прибавляя к ним число. Конечно, символы при этом ломаются.
источник

Pa

Psix aka Aleksandr in Unreal Engine
Anton Rassadin
Ты в своём коде выше работаешь с отдельными байтами двухбайтовых символов, прибавляя к ним число. Конечно, символы при этом ломаются.
А можно чуть-чуть подробнее, почему это ломает символы?
источник

AR

Anton Rassadin in Unreal Engine
Psix aka Aleksandr
А можно чуть-чуть подробнее, почему это ломает символы?
Посмотри, как кириллица представлена в utf8: https://i.voenmeh.ru/kafi5/Kam.loc/inform/UTF-8.htm
После изменения обоих байтов символа это уже не валидный code point.
источник

Pa

Psix aka Aleksandr in Unreal Engine
Если ты про то, что Я добавляю смещение в каждый из двух байтов кода utf8, то нет, я пробовал добавлять только в один, результат не меняется.
источник

AR

Anton Rassadin in Unreal Engine
Я не могу рассуждать о коде, которого не видел.
источник

AR

Anton Rassadin in Unreal Engine
Тот, что выше, сломан.
источник

Pa

Psix aka Aleksandr in Unreal Engine
5 минут, сейчас перепишу и перепроверю
источник

Pa

Psix aka Aleksandr in Unreal Engine
Anton Rassadin
Тот, что выше, сломан.
Огромное спасибо! Понял ошибку и исправил, работает наконец-то!
источник

N

Nikolay in Unreal Engine
Строки хранятся как UTF-16LE. Один символ может иметь размер от 1 (ASCII) до 4 байт (суррогатная пара).
источник

AR

Anton Rassadin in Unreal Engine
Psix aka Aleksandr
Огромное спасибо! Понял ошибку и исправил, работает наконец-то!
👌
источник

Pa

Psix aka Aleksandr in Unreal Engine
Я тут подумал... Это мне надо каждый байт проверять на паттерн признака двубайтового кода, да? Нельзя это как-то упростить?
источник

N

Nikolay in Unreal Engine
Psix aka Aleksandr
Я тут подумал... Это мне надо каждый байт проверять на паттерн признака двубайтового кода, да? Нельзя это как-то упростить?
Попробуй через массив:
TArray<TCHAR> Array = StringValue.GetCharArray();
источник

N

Nikolay in Unreal Engine
Psix aka Aleksandr
Я тут подумал... Это мне надо каждый байт проверять на паттерн признака двубайтового кода, да? Нельзя это как-то упростить?
    for (TCHAR Element : String.GetCharArray())
   {
       uint32 Char = Element;
       // Сравнить Char с диапазоном UNICODE
   }
источник
2020 October 30

LE

L-Asbjorn Edelmore in Unreal Engine
Люди, нужны программисты для разработки проекта, прототип имеется, демка идет по графику, пока успеваем к концу зимы. Если кого заинтересовал, то велком в личку. Все материалы предоставлю. Также не откажемся от ГД и аниматоров
источник

Pa

Psix aka Aleksandr in Unreal Engine
Nikolay
    for (TCHAR Element : String.GetCharArray())
   {
       uint32 Char = Element;
       // Сравнить Char с диапазоном UNICODE
   }
Идеально подходит для моих нужд. Спасибо! (к слову, int32 Char там лишний)
источник