по умолчанию, std :: string на моей машине - это GBK, а строка, которую я написал в программе, кодируется с помощью gbk, но иногда я получаю данные с сервера, а данные кодируются с помощью UTF- 8, я хочу определить, какой набор символов установлен в строке. Я видел метод кодирования utf-8 и gbk, его сложно выполнить самостоятельно.Определить набор символов строки
-1
A
ответ
1
Чтобы проверить, содержит ли контент std::string
содержимое UTF-8, декодируйте его как UTF-8 и проверьте, не сработает ли он.
Чтобы проверить, содержит ли std::string
GBK, расшифруйте его как GBK и проверьте, не сработает ли он.
Существует множество доступных библиотек для преобразования, таких как ICONV и ICU, которые обычно устанавливаются на большинстве платформ. Или используйте специфичные для платформы API, например MultiByteToWideChar()
на Windows (GBK распространяется на кодовые страницы 936 и 54936, а UTF-8 покрывается кодовой страницей 65001).
Или просто напишите свой собственный декодер (UTF-8 занимает всего несколько десятков строк кода). Вы можете найти информацию о битовых макетах UTF-8 и GBK в Википедии.
Смежные вопросы
- 1. Не удается определить набор символов
- 2. Как определить набор символов в строке?
- 3. jsFiddle Набор символов
- 4. Заданный набор символов командной строки Windows
- 5. Преобразование строки в набор без разделения символов
- 6. MySQL набор символов преобразования
- 7. набор символов преобразования Python
- 8. Определить язык символов строки в VB.net
- 9. PHP - как определить ширину строки символов
- 10. Лучший способ определить набор символов веб-страницы HTML5?
- 11. HTML/CSS Определить набор стилей символов с помощью CSS
- 12. набор 2 символов как один
- 13. error: Неизвестный набор символов: 'utf8_unicode_ci'
- 14. Набор символов по умолчанию MySQL
- 15. Неверный набор символов в DB
- 16. Неизвестных набор символов: «utf8mb4»
- 17. Regex заменить набор символов
- 18. Неизвестный набор символов utf8mb4
- 19. Oracle Database набор символов
- 20. PHP неправильный набор символов
- 21. PHP набор символов проблемы
- 22. Набор символов Специальные символы
- 23. Набор символов несовпадение
- 24. DOMDocument набор символов выпуск
- 25. Неизвестный набор символов: 'utf8mb4'
- 26. набор символов vb.net
- 27. OpenWhisk - набор символов?
- 28. Лимитный набор символов Webfont?
- 29. Какой набор символов это?
- 30. Набор символов в JDBC
'std :: string' кодирует агностик. Он не заботится о кодировании байтов, которые вы вложили в него. По существу, он лучше описывается как «байтовая строка», чем «текстовая строка». Поэтому не имеет смысла утверждать, что «по умолчанию« std :: string »в моей машине - GBK». Когда вы получаете строку откуда-то, это где-то также должно сказать вам, какая кодировка она использует. Вы не можете надежно угадать это только из содержимого строки. –