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

下一篇: Accessing private fields from a Class Helper