Skip to main content
 首页 » 编程设计

Python UTF-16 编码十六进制表示

2025年05月04日9zlslch

我在 Python 2.7.2 中有一个字符串 u"\u0638"。 当我将它写入文件时:

f = open("J:\\111.txt", "w+") 
f.write(u"\u0638".encode('utf-16')) 
f.close() 

十六进制看起来像:FF FE 38 06 当我将这样的字符串打印到标准输出时,我会看到:'\xff\xfe8\x06'。

问题: 输出到stdout的字符串中\x38在哪里?也就是说为什么输出到stdout的字符串不是'\xff\xfe\x38\x06'?

如果我将字符串写入文件两次:

f = open("J:\\111.txt", "w+") 
f.write(u"\u0638".encode('utf-16')) 
f.write(u"\u0638".encode('utf-16')) 
f.close() 

文件中的十六进制表示包含字节顺序标记(BOM)\xff\xfe 两次:FF FE 38 06 FF FE 38 06

请问有什么技巧可以避免在 UTF-16 编码的字符串中写入 BOM?

请您参考如下方法:

ASCII 字符 8 有十六进制表示 0x38。所以你的字符串:

\xff\xfe8\x06 

是四个 字节长。以空格分隔,字节为:

\xff \xfe 8 \x06 

Python 对不表示可打印 ASCII 字符的字节使用 \x 表示法。