Как конвертировать UTF-16 в UTF-8 с помощью C ++? - PullRequest
0 голосов
/ 14 декабря 2018
  • Я уже знаю 'codecvt', 'WideCharToMultiByte' и кого-то еще.

Я использую корейский язык.Например.'안녕하세요'.

В это сообщение можно вставить обычный класс строки.верно?

Но в моем случае.Если у меня есть file :: 'test.txt' {in :: '안녕하세요'}

И прочитайте 'test.txt' и getline (),

(test.txt file read)
string temp;
getline(file pointer, temp);
cout<<temp;

Теперь я используюсоиЬ.Ta-Da!сообщение повреждено!

Я знаю, что это проблема WideCharacter.поэтому я использую метод MultiByteToWideChar.

Хорошо.Это хорошо работает.

Но я не хочу этого.

Наконец-то я хочу прочитать файлы Widecharcter и сохранить переменную 'string'.

Итак, я вас спрашиваю.

Как преобразовать UTF-16 (widecharcter / wstring) в UTF-8 (многобайтовый / строковый), когда 'Not change message'?

:: Я хочу этот стиль

wstring temp = "안녕하세요"

string temp2 = convert_to_string (temp);

->

string temp2 = "안녕하세요"

1 Ответ

0 голосов
/ 14 декабря 2018

Как уже упоминалось в комментарии, вы можете увидеть Конвертировать C ++ std :: string в кодированную строку UTF-16-LE для кода о том, как выполнить преобразование.

Но с учетомвы предполагали, что у вас есть wstring для хранения вашей корейской строки, вы избежали проблемы различения UTF-16-LE и UTF-16-BE и могли легко найти кодовую точку Unicode для каждого корейского символа в строке.Таким образом, ваша проблема сводится к тому, чтобы найти представление UTF-8 любой кодовой точки.Это не будет сложно, см. Стр. 3 из https://tools.ietf.org/html/rfc3629 (также Википедия https://en.wikipedia.org/wiki/UTF-8).

Пример кода в Преобразование кодовых точек Unicode в UTF-8 и UTF-32

...