如何在Python/Django中将西里尔字母写入文件
我有一个包含大量文本的大表单。例如,它可能包含带引号的单词,如"Программа"
。当我将它提交给服务器并尝试将提交的内容写入文件时,出现错误。如果我用拉丁字母替换所有西里尔字母,那么一切正常。问题显然在服务器端。我想,如果我新的如何处理像"Текст на кириллице"
这样的字符串,我可以解决这个问题。如何在Python/Django中将西里尔字母写入文件
当您写入文件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')
如果我将文本作为变量传递,我应该怎么做?我的意思是,这个“text = u变量”是正确的吗?我不知道正确的语法 – Jacobian 2014-11-02 14:11:50
在我的例子'text' - 是一个变量,'u“Текстнакириллице”'是一个变量值 – stalk 2014-11-02 14:13:03
我的意思是,我想在右侧有一个变量。想象一下,我有一个变量,它包含这个文本'Текстнакириллице'。我应该如何将它转换为utf?只是你变了吗?或者variable.encode(utf8)? – Jacobian 2014-11-02 14:16:56
什么错误,你得到什么呢? – 2014-11-02 14:01:03
服务器应该返回json'{success:true}',并且客户端用一个警告'Saved!'来响应。拉丁字母的作品,但与西里尔字母我看不到来自服务器的回应。 – Jacobian 2014-11-02 14:07:14