python - Django 支持的站点中的 Unicode

标签 python django unicode

这是几周内我第二次陷入编码问题。我已经在这个问题上花了很长时间了,如果能得到任何帮助,我将不胜感激。

这就是我想做的:

1) 从我计算机上的 MySQL 表中选择一些行。

2) 将这些行写入文本文件。

3) 将文本文件传输到我的 Amazon EC2 Ubuntu 实例。

4) 将文本文件的内容写入MySQL数据库。

5) 让 Django 从#4 中的数据库中选择一些行。

6) 在网站上显示。

在第 1 步中,我只有一个普通的 SELECT 语句。 在步骤 #2 中,我这样做了:

file = codecs.open('commentsfordjango.txt', encoding = 'utf-8', mode='w')
file.write(fullcomment.decode('utf8') + '\n\n\n\n\n\n')

在步骤#2之后,我在Windows中打开.txt文件,我可以看到所有实际的汉字,没有任何错误。

在步骤 #3 中,我刚刚使用 WinSCP 传输了文件。 在步骤 #4 中,我这样做了:

file = open('/usr/local/src/blog/commentsfordjango.txt', 'r')
cursor.execute("INSERT INTO polls_poll (commenttext, pos, neu, neg) VALUES (%s, 0, 0, 0)", line)

在第 5 步中,我在 views.py 中执行了此操作:我只是返回与模型对应的对象。我的模型有一个 unicode 函数,但我没有调用它,因为我默认情况下读到它,当您调用对象时它已经被调用。

在步骤 #6 中,我的 HTML 文件在文件顶部包含以下行:

<meta charset="utf-8" />

此外,我将 Apache 编码默认值更改为 Unicode。我还确保步骤 #4 中的 SQL 数据库采用 Unicode。

然而,在这一切之后,我的网站仍然显示一堆不可读的、奇怪的字符,例如:äºåœěªšï Œå¤©åœě眤¤。

非常感谢任何帮助 - 我已经尝试了很多涉及 .decode() 和 .encode('utf-8') 的变体,并且已经在这个问题上花费了太长时间!

最佳答案

在步骤 #2 中,您应该将文本编码为 UTF-8。

with open("commentsfordjango.txt", "wb") as f:
    f.write(fullcomment.encode('utf8'))

在步骤 #3 中,您可以将从文件中读取的数据解码回 unicode。

with open("commentsfordjango.txt", "rb") as f:
    for line in f.read().decode("utf-8").splitlines():
        cursor.execute("INSERT INTO polls_poll (commenttext, pos, neu, neg) VALUES (%s, 0, 0, 0)", line)

更好的解决方案是使用 Django 的内置 loaddata/dumpdata设施。

关于python - Django 支持的站点中的 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11553454/

相关文章:

django - 为新手制作带有图形数据库后端的基本网站的简单方法是什么?

Django rest_framework 自定义错误信息

python - 在 Windows 记事本的 Python 中创建 UTF-16 换行符

Java 字符串 Unicode 值

python - 在 Python 中对异构对象列表进行排序

python - 如何访问 numpy recarray 的字段#k?

python - 在 QLabel 中渲染 WSQ 图像的最佳方式是什么

python - 将数据从 bigquery 转储到 postgresql

python - 从 Windows 访问 ubuntu 文件(安装在 virtualbox 中)

c++ - 在 Windows 中,如何检测 Unicode 字符是否呈现为正方形( bean 腐)?