django编码到utf8无法正常工作

时间:2015-12-14 10:28:53

标签: python mysql django utf-8

我有点卡在这里。我有这个代码,它将文本中的html元素转换为utf8并将其编码为utf8。

import HTMLParser

def clean_text(text):
    htmlparser = HTMLParser.HTMLParser()
    return htmlparser.unescape(
        ' '.join(text.replace('\n', '').split())
    ).replace(';', ',').encode('utf-8').strip()

我正在使用mysql(上帝救了我!)

并且此代码在两个项目中运行。在第一个项目中,代码运行良好,没有问题。在另一个项目中,字符串将保存为:

Die Verbindungen zwischen Dinosauriern und Vögeln immer stärker

应该是

Die Verbindungen zwischen Dinosauriern und Vögeln immer stärker

我在django 1.7和python 2.7.9两个项目中使用

我错过了什么? mysql的搭配是utf8_general_ci,聊天集是utf8。两个mysql dbs在设置中都是一样的。

解决这个问题将是一个奇迹......如果有人可以帮助我调试这个东西,我会给予一个温暖的拥抱和亲吻

2 个答案:

答案 0 :(得分:0)

Vögeln - > Vögeln是Mojibake的一个例子

  • 客户端中的字节在utf8(正常)中正确编码。
  • 您可能默认与SET NAMES latin1(或set_charset('latin1')或...)相关联。 (应该是utf8。)
  • 表格中的列可能是CHARACTER SET utf8,也可能不是# -*- coding: utf-8 -*-,但应该是这样。

也许有用:Django character latin1 mysql Incorrect string value in python+django+Mysql

Python核对表:

  • charset='utf8' - (代码中的文字)
  • connect()电话中
  • bottle_mysql.Plugin - 这是否埋在u'...'中? (注意:尝试'utf-8'和'utf8')
  • 以utf8编码的文字。
  • 如果您愿意在任何地方接受utf8,则无需编码()或解码()。
  • <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />为文字
  • CHARACTER SET utf8 COLLATE utf8_general_ci靠近html页面的开头
  • Content-Type:text / html; charset = UTF-8(在HTTP响应头中)
  • header('Content-Type:text / html; charset = UTF-8'); (在PHP中获取响应头)
  • d1=$(find ./dir1 -name '*20151215*' | wc -l) if [ $d1 != 4 ]; then echo "dir1" ; fi 关于MySQL中的列(或表)定义。
  • [[UTF-8 all the way through一直通过]]
  • 使用MySQL Connector / Python代替pyodbc和MySQL Connector / ODBC

(@ DanielRoseman - 我说错了吗?)

答案 1 :(得分:-1)

在您的文件顶部提及编码$(function() { // all code here }); ,它将像魅力一样工作。