1

私はASCIIテキストを含まない複数の言語でファイルを書き込むスクリプトを書いているので、コンテンツをユニコードで書いています。

データの印刷は次のとおりです。

[['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(リトルエンディアン)またはutf-16be(ビッグエンディアン)のいずれかを明示的に使用します。

于 2012-09-05T21:51:49.343 に答える