sách gpt4 ăn đã đi

python - 为什么有些字符串采用 utf-16 编码,而另一些字符串仅采用 utf-8 编码?

In lại Tác giả: Walker 123 更新时间:2023-11-30 23:24:22 28 4
mua khóa gpt4 giày nike

>>> unicode('восстановление информации', 'utf-16')
Traceback (most recent call last):
File "", line 1, in
File "C:\Python27\lib\encodings\utf_16.py", line 16, in decode
return codecs.utf_16_decode(input, errors, True)
UnicodeDecodeError: 'utf16' codec can't decode byte 0xb8 in position 48: truncated data

>>> unicode('восстановление информации', 'utf-8')
u'\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438'

为什么这些俄语单词可以用 UTF-8 编码,但不能用 UTF-16 编码?

câu trả lời hay nhất

您要求 unicode 函数解码一个字节字符串,然后给它错误的编码。

将字符串粘贴到 OS-X 上的 Python-2.7 中

>>> 'восстановление информации'
'\xd0\xb2\xd0\xbe\xd1\x81\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd0\xbe\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb8\xd0\xbd\xd1\x84\xd0\xbe\xd1\x80\xd0\xbc\xd0\xb0\xd1\x86\xd0\xb8\xd0\xb8'

此时它已经是一个 UTF-8 编码的字符串(可能是您的终端确定了这一点),因此您可以通过指定 utf-8 编解码器对其进行解码

>>> 'восстановление информации'.decode('utf-8')
u'\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438'

但不是 UTF-16,否则无效

>>> 'восстановление информации'.decode('utf-16')
Traceback (most recent call last):
File "", line 1, in
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_16.py", line 16, in decode
return codecs.utf_16_decode(input, errors, True)
UnicodeDecodeError: 'utf16' codec can't decode byte 0xb8 in position 48: truncated data

如果要将 unicode 字符串编码为 UTF-8 或 UTF-16,请使用

>>> u'восстановление информации'.encode('utf-16')
'\xff\xfe2\x04>\x04A\x04A\x04B\x040\x04=\x04>\x042\x04;\x045\x04=\x048\x045\x04 \x008\x04=\x04D\x04>\x04@\x04<\x040\x04F\x048\x048\x04'
>>> u'восстановление информации'.encode('utf-8')
'\xd0\xb2\xd0\xbe\xd1\x81\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd0\xbe\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb8\xd0\xbd\xd1\x84\xd0\xbe\xd1\x80\xd0\xbc\xd0\xb0\xd1\x86\xd0\xb8\xd0\xb8'

请注意,输入字符串是 unicode(前面有一个 TRONG),但这里的输出是字节字符串(它们开头没有 TRONG) )其中包含以相应格式编码的 unicode 数据。

关于python - 为什么有些字符串采用 utf-16 编码,而另一些字符串仅采用 utf-8 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23464416/

28 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress