我们面临的问题是,我们有一个文件,当使用普通文件阅读器(例如 Notepad++)打开时,表情符号会成功渲染,并且不会添加额外的新行。然而,当用Python打开它时,utf-16字节被分成两行,搞乱了我们并行读取文件的大数据处理框架。
我们需要了解是什么让 Notepad++ 清楚地知道序列中没有真正的新行
=\xd8\n\xde
,以便我们可以调整自定义文件阅读器。
重现步骤
将此表情符号😊复制到空文件并添加新行。
保存文件并使用Python以字节格式打开它:
# Open the file as bytes:
with open("file_name.csv", "rb") as f:
for line in f:
print(line)
b'\xff\xfe=\xd8\n'
b'\xde\r\x00\n'
b'\x00'
U+1F60A 的 UTF-8 字节实际上是(十六进制)
f0 9f 98 8a
。请注意,这不包含字节 0A
又名 \n
,而是 8A
。
UTF-16(大端)两字节字符是:d83d de0a。
UTF-16LE(低端)两字节字符是:3dd8 0ade。
这是错误:编码错误,您正在使用字节编码或类似的编码。