Django 1.11:在Windows上写入文件的问题
我试图用django对象(CharField)和某些格式的数据将文本写入文件。 问题在于加重字符(在下面的例子中是é)。
在Linux上我没有问题。 但是,在Windows 7上,我遇到了非常混乱的行为。
这(打开电话没有编码):
from usermod.models import User
user = User.objects.get(pk=134)
with open('test.txt', 'w') as fout:
fout.write(user.birth_place + ',')
fout.write('Séoul')
fout.close()
生产:
SxE9l,首尔
而这(打开呼叫与编码):
from usermod.models import User
user = User.objects.get(pk=134)
with open('test.txt', 'w', encoding='utf8') as fout:
fout.write(user.birth_place + ',')
fout.write('Séoul')
fout.close()
生产:
首尔,SA©OUL
当然,预期的结果是:
首尔,首尔
这就是我在Linux上用同一个数据库得到的结果。
所以奇怪的是每个选项都有不同的部分是非。 在一种情况下,ORM检索值是错误的。 另一个是源代码中创建的字符串对象是错误的。 我无法找到正确的方法。
所有文件都以UTF8编码(如记事本++报告)。 python版本是3.5.4 MySql数据库具有UTF8中的所有编码,用户表上的SQL查询显示预期的重音符号。 这段代码是通过django shell(python manage.py shell)执行的,命令如下:
exec(open('scripts / test.py')。read())其中test.py包含上面显示的代码。
任何想法?
http://mysql.rjweb.org/doc.php/charcoll#python
特别是源代码中的第一行或第二行(在代码中使用utf8编码的文字):
# -*- coding: utf-8 -*-
链接地址: http://www.djcxy.com/p/91063.html
上一篇: Django 1.11: Issues with utf8 writing to file on windows