Rom*_*eno 1 python string file utf-16 utf
我在Python 2.7.2中有一个字符串,说你是"\ u0638".当我把它写到文件:
f = open("J:\\111.txt", "w+")
f.write(u"\u0638".encode('utf-16'))
f.close()
Run Code Online (Sandbox Code Playgroud)
在十六进制中,它看起来像:FF FE 38 06当我将这样的字符串打印到stdout时,我会看到:'\ 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()
Run Code Online (Sandbox Code Playgroud)
文件中的十六进制表示包含两次字节顺序标记(BOM)\ xff\xfe :FF FE 38 06 FF FE 38 06
我想知道什么是避免在UTF-16编码字符串中写BOM的技术?
ASCII字符8具有十六进制表示0x38.所以你的字符串:
\xff\xfe8\x06
Run Code Online (Sandbox Code Playgroud)
是四个字节长.用空格分隔,字节是:
\xff \xfe 8 \x06
Run Code Online (Sandbox Code Playgroud)
Python使用\x不表示可打印ASCII字符的字节表示法.
| 归档时间: |
|
| 查看次数: |
4152 次 |
| 最近记录: |