Преобразование многобайтовых символов в UTF-8 - PullRequest
0 голосов
/ 21 января 2010

Мое приложение должно записывать данные в XML-файл, который будет считан SWF-файлом. SWF ожидает, что данные в XML будут в кодировке UTF-8. Я должен преобразовать некоторые многобайтовые символы в моем приложении (китайский упрощенный, японский, корейский и т. Д.) В UTF-8. Есть ли какие-либо вызовы API, которые могли бы позволить мне сделать это? Я бы предпочел не использовать какие-либо сторонние библиотеки DLL. Мне нужно сделать это как на Windows, так и на Mac, и я бы предпочел любой системный API, если он доступен.

Спасибо jbsp72

Ответы [ 2 ]

2 голосов
/ 21 января 2010

UTF-8 - это многобайтовое кодирование (ну, точнее, кодирование с переменной длиной байта). Утверждение, что вам нужно преобразовать из многобайтовой кодировки, недостаточно. Вам нужно указать какая многобайтовая кодировка вашего источника?

0 голосов
/ 21 января 2010

Я должен преобразовать несколько многобайтовых символы в моем приложении (китайский упрощенный, японский, корейский и т. д.) UTF-8.

если ваша исходная строка имеет многобайтовый формат (китайский / арабский / тайский / и т. Д.) И вам необходимо преобразовать ее в другой многобайтовый формат (UTF-8), один из способов - сначала преобразовать в WideCharacter (UTF-16) затем преобразовать обратно в многобайтовый.

multibyte(chinese/arabic/thai/etc) -> widechar(UTF-16) -> multibyte(UTF-8)

если ваша исходная строка уже в Unicode (UTF-16), вы можете пропустить первое преобразование на иллюстрации выше

Вы можете ссылаться на кодовую страницу с MSDN .

В Google Chrome есть несколько реализаций преобразования строк для Windows, Linux и Mac. Вы можете видеть это здесь или здесь . файлы находятся в каталоге src / base:
+ sys_string_conversions.h
+ sys_string_conversions_linux.cc
+ sys_string_conversions_win.cc
+ sys_string_conversions_mac.mm

Код использует лицензию BSD, поэтому вы можете использовать ее для коммерческих проектов.

...