Как конвертировать (не обязательно программно) между Windows wchar_t и GCC / Linux? - PullRequest
4 голосов
/ 25 октября 2008

Предположим, у меня есть строка Windows wchar_t:

L"\x4f60\x597d"

и

L"\x00e4\x00a0\x597d"

и хотел бы преобразовать его (необязательно программно; это будет одноразовая вещь) в формат GCC / Linux wchar_t, который является UTF-32 AFAIK Как мне это сделать? (общее объяснение было бы неплохо, но пример, основанный на этом конкретном случае, также был бы полезен)

Пожалуйста, не направляйте меня на сайты преобразования персонажей. Я хотел бы преобразовать из формы L "\ x (что-то)", а не из формы "конечный символ".

Ответы [ 4 ]

2 голосов
/ 26 октября 2008

Вам нужно беспокоиться только о символах между \ xD800 и \ xDFFF включительно . Каждый другой символ должен отображаться точно так же с UTF-16 на UCS-4 при заполнении нулями.

2 голосов
/ 25 октября 2008

Будет ли приемлемым ответ преобразование из UTF-16 (форма Visual C ++ wchar_t) в UTF-8, затем, возможно, из UTF-8 в UCS-4 (форма GCC wchar_t)?

Если это так, то в Windows вы можете использовать функцию WideCharToMultiByteCP_UTF8 для параметра CodePage) для первой части преобразования. Затем вы можете либо вставить полученные строки UTF-8 непосредственно в вашу программу, либо преобразовать их дальше. Здесь - это сообщение, показывающее, как это сделал один человек; Вы также можете написать свой собственный код или сделать это вручную (официальная спецификация с разделом о том, как именно конвертировать UTF-8 в UCS-4, может быть найдена здесь ). Возможно, есть более простой способ, я еще не слишком знаком с вещами преобразования в Linux.

0 голосов
/ 24 июля 2009

Игнасио прав, если вы не используете редкие китайские иероглифы (или несколько вымерших сценариев), тогда сопоставление один к одному. (официальное «жаргон» - «если у вас нет символов вне BMP»)

Это алгоритм, на всякий случай: http://unicode.org/faq/utf_bom.html#utf16-3 Но опять же, скорее всего, бесполезно для вашего реального случая.

Вы также можете использовать бесплатные исходники из Юникода ( ftp: //ftp.unicode.org/Public/PROGRAMS/CVTUTF)

0 голосов
/ 09 декабря 2008

Одной из наиболее часто используемых библиотек для преобразования символов является библиотека ICU http://icu -project.org / Это, например, используется некоторыми библиотеками boost http://www.boost.org/.

...