1

我正在编写一个脚本,该脚本以多种语言编写文件,包括无 ascii 文本,因此我正在使用 unicode 编写内容。

这是数据的打印:

[['LATEST', u'\u0928\u0935\u0940\u0928\u0924\u092e'], ['RECOMMENDED', u'\u0938\u093f\u092b\u093e\u0930\u093f\u0936 \u0915\u093f\u092f\u093e \u0917\u092f\u093e']]

这是我用来编写的代码:

f = codecs.open(file,encoding='utf-8', mode='w')
f.write(el)

这很好,必须在文本编辑器中以印地语出现文本,但由于服务器期望的文件格式,我需要直接写出

\u0928\u0935\u0940\u0928\u0924\u092e

我目前正在运行

os.system("native2ascii -encoding utf-8 ./output/nls_hi.properties ./output/nls_hi.properties")

但这需要太多时间,我不禁认为必须有一种方法可以直接以正确的方式编写它。

想法?

谢谢

杰森

4

2 回答 2

4

你可能想使用类似的东西my_string.encode('raw_unicode_escape')

出色地,f = codecs.open('bla.txt', encoding='raw_unicode_escape', mode='w')

然后文件将包含转义字符串:\u0928\u0935\u0940\u0928\u0924\u092e

于 2012-09-05T21:49:32.670 回答
1

服务器期望什么文件格式?是否需要字节顺序标记(BOM)?无论答案是什么,最简单的方法就是直接使用str.encode

data = u'text with Unicode chars etc.'
with open(filename, 'w') as f:
    # For UTF-8, no BOM:
    f.write(data.encode('utf-8')

对于 UTF-16,请使用data.encode('utf-16'),它会附带一个 BOM。如果您不想要 BOM,请明确使用utf-16le(little-endian) 或utf-16be(big-endian)。

于 2012-09-05T21:51:49.343 回答