Я пишу веб-искатель, чтобы получить некоторые китайские веб-файлы. Выбранные файлы закодированы в utf-8. И мне нужно прочитать этот файл, чтобы выполнить синтаксический анализ, например, извлечение URL-адресов и китайских символов. Но я обнаружил, что когда я прочитал файл в std :: string и вывел его в консоль, китайские символы стали символами мусора. Я применил boost :: regex в std :: string и смог извлечь все URL-адреса, кроме китайских символов.Как читать кодированный файл UTF-8, содержащий китайские символы, и выводить их на консоль?
Как я могу решить эти проблемы?
P.S. Мои файлы CPP кодируются как ANSI по умолчанию, операционная система - Win8 на китайском языке;
Похоже, вам нужно изменить «кодовую страницу» с UTF-8 на любую кодовую страницу, используемую консолью для китайских иероглифов. Вызовите MultiByteToWideChar, чтобы перейти от UTF-8 к Unicode, а затем WideCharToMultiByte, чтобы перейти от Юникода к локальной кодовой странице. – john
Скорее всего, ошибка консоли. Попробуйте '>' 'войти в файл. Если он окажется действительным UTF-8 с китайскими иероглифами, то ваша программа работает нормально, и это вопрос Windows. (Конечно, вам все равно нужно изменить свою программу для работы с Windows, но вы узнаете, кто виноват.) – aib
@aib Да, когда я перенаправляю std :: string переменную в другой файл, содержимое остается действительным UTF-8 с персонажами Chiese. Кодовая страница моей консоли - «936 (ANSI/OEM - 简体 中文 GBK)». –