我得到了一个29.827的整数值,我想用UTF-16-LE编码将其转换为Unicode汉字“玻璃”(U + 7483)(见http://www.fileformat.info/info/unicode/char/7483/index.htm)。
我设法将此数字转换为3字节UTF-8编码(2048以上的整数在UTF-8中为3字节)和
s ='\u%s'%hex(int_to_encode)[2:]
file.write(s.decode('unicode-escape').encode('utf-8'))
file.close()
但我发现所需的编码是UTF-16-LE。 在预期的编码中,整数表示也有3个字节(这就是为什么我认为我的第一次尝试是正确的,一个整数也是3个字节...)
非常感谢您的帮助,
亲切的问候
答案 0 :(得分:2)
首先将数字转换为字符使用sudo service switchDesktop0OnIdle status
(Python3)或chr()
(Python2)。然后使用UTF-16-LE进行编码,您只需指定编码而不是指定UTF-8。
所以Python 2:
unichr()
在Python 2或Python 3中,您可以在打开时指定文件编码:
int_to_encode = 0x7483
s = unichr(int_to_encode)
file.write(s.encode('utf-16-le'))
file.close()
控制台会话显示:
import io
s = unichr(0x7483)
with io.open('foo', 'w', encoding='utf-16-le') as f:
f.write(s)