如何在Python/Django中将西里尔字母写入文件
我有一个很大的表单,里面有很多文字。例如,它可能包含像 "Программа"
这样的带引号的单词。当我把这个表单提交到服务器,并尝试把提交的内容写入文件时,我遇到了错误。如果我把所有的西里尔字母换成拉丁字母,那一切就正常了。显然,问题出在服务器那边。我想,如果我知道怎么处理像 "Текст на кириллице"
这样的字符串,我就能解决这个问题。
1 个回答
4
当你想把Unicode字符串写入文件时,必须先对它进行编码。
我们来试试下面的代码:
# -*- coding: utf-8 -*-
text = u"Текст на кириллице"
with open('outfile.txt', 'w') as fw:
fw.write(text)
这段代码会引发一个错误
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
所以,记得要对文本进行编码。最常用的编码方式之一是'utf8':
# -*- coding: utf-8 -*-
text = u"Текст на кириллице"
with open('outfile.txt', 'w') as fw:
fw.write(text.encode('utf8'))
你必须记住用来编码文本的编码方式,这样才能在以后读取它。 要从文件中读取文本时,使用和写入时相同的编码进行解码:
with open('outfile.txt') as f:
text = f.read()
print text.decode('utf8')