Как я уже упоминал в своем комментарии: я думаю, что этот ход мыслей требует, так сказать, нескольких вопросов прямо к вам:
Почему вы делаете это преобразование в первую очередь?
Вы действительно знаете, что делает WideCharToMultiByte()
?
Я свободно признаю, что сам не совсем понимаю, что именно делает WideCharToMultiByte()
; но я собираюсь пойти дальше и предположить, что он преобразует строку широких символов в строку многобайтовых символов. При беглом взгляде на документацию кажется, что она делает это в новом буфере, возвращая длину новой строки.
Что все хорошо и денди. Проблема в том, что UTF-8 на самом деле не является широкой кодировкой символов; а ISO-8859-1 не является многобайтовой кодировкой. UTF-8 является многобайтовой кодировкой; но в данном случае это мало поможет.
Мой совет; затем вы читали о кодировках символов; особенно о различиях между UTF-8 (многобайтная) и UTF-16 (широкая).
Я также предлагаю вам найти другой интерфейс для всего, что вы пытаетесь сделать, который фактически принимает строки UTF-8; потому что любой интерфейс, который требует строк ISO-8859-1, особенно при работе с XML, кажется мне безумно устаревшим, граничащим с полным безумием.
Конечно, если бы вы на самом деле заявили, чего вы в целом пытались достичь; можно дать более конкретный совет.
Изменить: Если я правильно понимаю вашу загадку, проблема в том, что вы получаете правильно отформатированный и закодированный файл XML, который может содержать символы вне диапазона ASCII (U+0…U+127). Если это проблема, использование ISO-8859-1 в любом виде, форме или форме настроит вас на мать всех головных болей в будущем:
Проблемы с кодировкой
Если текстовый файл может содержать какой-то символ за пределами диапазона ASCII, то он может содержать любой символ за пределами диапазона ASCII. И хотя UTF-8 может представлять любой символ, это не относится к ISO-8859-1.
Другими словами; ваш лучший сценарий, если вы придерживаетесь интерфейса, который неправильно обращается с кодировками, - это необратимая потеря информации; в худшем случае - авария и выгорание.
Моя точка зрения такова: не балуйте сломанный интерфейс и никогда не используйте UTF-8.
person
Williham Totland
schedule
23.06.2011