Python Chardet не может правильно определить utf-8

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import chardet
s = '123'.encode('utf-8')
print(s)
print(chardet.detect(s))

ss ='编程'.encode('utf-8')
print(chardet.detect(ss))

и результаты

b'123'
{'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
{'encoding': 'utf-8', 'confidence': 0.7525, 'language': ''}

Почему это не может обнаружить s как UTF-8?

А почему ASCII?

Эта линия бесполезна? # -*- coding: utf-8 -*-Новичок Python, спасибо!

1 ответ

Решение

Давайте просто поговорим об этих строках - все мясо есть:

s = '123'.encode('utf-8')
print(s)

Вы правы, что Python 3 по умолчанию использует Unicode. Когда ты сказал '123'.encode() вы конвертируете строку Unicode в последовательность байтов, которая затем будет напечатана с уродливым b префикс, чтобы напомнить вам, что это не тип строки по умолчанию.

Другие вопросы по тегам