Я знаю, что этот вопрос задавался довольно много раз здесь, и я прочитал некоторые из ответов. Но есть несколько предлагаемых решений, и я пытаюсь выяснить лучшие из них ,Преобразование текста UTF-8 в wchar_t
Я пишу приложение C99, которое в основном получает XML-текст, закодированный в UTF-8.
Часть из его работы состоит в том, чтобы скопировать и манипулировать эту строку (найти SUBSTR, кот его, бывшего ..)
Как я предпочел бы не использовать внешнюю не-стандартную библиотеку прямо сейчас, им пытается реализуйте его с помощью wchar_t.
В настоящее время im использует mbstowcs, чтобы преобразовать его в wchar_t для удобства манипуляции, а для некоторого ввода я попробовал на разных языках - он работал нормально.
Вещь, я прочитал некоторые люди, там были некоторые проблемы с UTF-8 и mbstowcs, поэтому я хотел бы услышать о том, разрешено ли это использование/приемлемо.
Другим вариантом, с которым я столкнулся, был использование iconv с параметром WCHAR_T. Дело в том, что я работаю на платформе (а не на ПК), которой он является очень ограниченным только для локали ANSI C. Как насчет этого?
Я также столкнулся с некоторой библиотекой C++, которая очень популярна. но им ограничен для реализации C99.
Кроме того, я бы скомпилировал этот код на другой платформе, размер size of wchar_t отличается (2 байта против 4 байтов на моей машине). Как я могу это преодолеть? используя контейнеры с фиксированным размером? но тогда, какие функции манипуляции я должен использовать вместо этого?
Счастливые услышать некоторые мысли. Благодарю.
Вы * будете * сталкиваться с трудностями и иметь проблемы, я им гарантирую. UTF-8 является кодировкой, 'wchar_t' является деталью хранения, эти два не связаны друг с другом. 'wchar_t' просто упрощает обработку UTF-16, но как насчет суррогатных пар? Многобайтовые одиночные символы в UTF-8? – Dai
Спасибо. не могли бы вы объяснить? –
Что не так с mbstowcs? –