В контексте почтового клиента мне нужно конвертировать в/из множества разных кодировок и юникода. До сих пор в Windows и Linux я использовал iconv для преобразования текста между наборами символов. Однако на Mac первое преобразование, которое я пробовал, из cp932 в utf-16 не удалось с кучей мусорных символов. У меня был Google, и некоторые люди предлагали сначала установить локаль с помощью setlocale, но это, похоже, не повлияло на ситуацию.
Может быть, мне вообще не стоит использовать iconv на Mac? Есть ли альтернативный API для преобразования кодировки?
Я также открыт для предложений по исправлению кода iconv... код в основном соответствует следующим строкам:
setlocale(LC_ALL,"");
iconv_t Conv;
if ((Conv = libiconv_open("utf-16", "cp932")) >= 0)
{
// Convert
int s = libiconv(Conv, &InBuf, (size_t*)&InLen, &OutBuf, (size_t*)&OutLen);
libiconv_close(Conv);
}
Тот же вводимый текст в Windows работает нормально, на Mac выдает мусор.