Как я уже говорил в своем комментарии: я думаю, что эта мысль требует нескольких вопросов прямо к вам, так сказать:
Почему вы делаете это преобразование впервое место?
Вы действительно знаете, что делает 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.