#c #unicode #char #wchar-t
#c #юникод #символ #wchar-t
Вопрос:
Я использую японскую строку в качестве wchar_t
, и мне нужно преобразовать ее в char*
. Существует ли какой-либо метод или функция для преобразования wchar_t*
в char*
без потери данных?
Комментарии:
1. Какой язык вы используете? C?
Ответ №1:
Недостаточно сказать «У меня есть строка как wchar_t
«. Вы также должны знать, в какой кодировке находятся символы строки. Это, вероятно, UTF-16, но вам нужно знать определенно.
Также недостаточно сказать «Я хочу преобразовать в char
«. Опять же, вы должны принять решение о том, в какой кодировке будут представлены символы. JIS? Shift-JIS? EUC? UTF-8? Другая кодировка?
Если вы знаете ответы на два вопроса выше, вы можете выполнить преобразование без каких-либо проблем с помощью WideCharToMultiByte
.
Ответ №2:
Что вам нужно сделать в первую очередь, это выбрать кодировку строки, такую как UTF-8 или UTF-16. А затем закодируйте ваши wchar_t[]
строки в выбранной вами кодировке с помощью libiconv или другой подобной библиотеки кодирования строк.
Комментарии:
1. Привет, минхи, Не могли бы вы, пожалуйста, немного подробнее рассказать о предоставленном вами ответе
Ответ №3:
Вам нужно вызвать WideCharToMultiByte
и передать идентификатор кодировки кодовой страницы для желаемой японской многобайтовой кодировки. Смотрите MDSN для этой функции. В Windows локальным многобайтовым набором является CP932, вариант MS для ShiftJIS. Однако, возможно, вы захотите отправить UTF-8 кому-то, кто этого хочет.