Как я могу преобразовать wchar_t * в char * без потери данных? - PullRequest
1 голос
/ 11 апреля 2011

Я использую японскую строку как wchar_t, и мне нужно преобразовать ее в char*. Есть ли какой-либо метод или функция для преобразования wchar_t* в char* без потери данных?

Ответы [ 3 ]

7 голосов
/ 11 апреля 2011

Недостаточно сказать «У меня есть строка как wchar_t». Вы также должны знать, что означает кодировка символов строки. Это вероятно UTF-16, но вам нужно знать определенно.

Также недостаточно сказать «я хочу преобразовать в char». Опять же, вы должны принять решение о том, в какой кодировке будут представлены символы. JIS? Shift-JIS? EUC? UTF-8? Другая кодировка?

Если вы знаете ответы на два вопроса выше, вы можете без проблем выполнить преобразование, используя WideCharToMultiByte.

2 голосов
/ 11 апреля 2011

Вам нужно позвонить WideCharToMultiByte и передать идентификатор кодировки кодовой страницы для требуемой японской многобайтовой кодировки.Смотрите MDSN для этой функции.В Windows локальным многобайтовым набором является CP932, MS-вариант ShiftJIS.Однако вы, возможно, захотите, чтобы UTF-8 отправлял тому, кто этого хочет.

2 голосов
/ 11 апреля 2011

Сначала вам нужно выбрать строковую кодировку, например UTF-8 или UTF-16.А затем закодируйте ваши wchar_t[] строки в выбранной вами кодировке с помощью libiconv или другой аналогичной библиотеки кодирования строк.

...