Справа налево изолировать строку.C ++ - PullRequest
0 голосов
/ 23 мая 2018

есть ли у кого-нибудь опыт работы с юникодами?

Я сталкиваюсь с серьезной проблемой с юникодами фарси.
У меня есть std::wstring s = (L"\u0634\u0646\u0628\u0647");, что является словом фарси.Когда я отлаживаю его, я вижу, что основное слово - именно то, что я хочу, но наоборот.Итак, я исследовал и обнаружил, что u2067 предназначен для чтения строки справа налево.
ПРИМЕЧАНИЕ:

Я не могу повернуть строку вручную, потому что символы фарси меняют свою форму независимо от их положения вstring.

Итак, я добавил 2067 int в начало и получил
std::wstring s = (L"\u2067\u0634\u0646\u0628\u0647");.
Но теперь основная строка такая же, просто добавили квадрат в начало, если строкавместо реверса.
У кого-нибудь есть опыт с этим материалом?Пожалуйста, предложите решение.Спасибо!

1 Ответ

0 голосов
/ 23 мая 2018

Основная строка будет такой же.Вы не изменили порядок байтов, который записан прямо в коде.Но средство визуализации, которое понимает Unicode, должно взять эти байты и отобразить символов справа налево.Это визуальная вещь.Это не имеет ничего общего с кодировкой.Из твоего вопроса не совсем понятно, чего еще ты ожидал.Возможно, вы просматриваете строку в отладчике, и отладчик не поддерживает эту функцию Unicode.Если вы попытаетесь вывести строку на соответствующую консоль, вы должны увидеть ее так, как ожидаете.

...