1

我知道以前有人问过这个问题,但提出的解决方案似乎不起作用。我正在尝试将文本插入表格,但我不断收到以下信息:

Warning: Incorrect string value: '\xEBrt of...' for column 'title' at row 1

有问题的字符是:ë

这是表格的外观:

CREATE TABLE `rstest_article` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `source_id` int(11) NOT NULL,
  `title` varchar(200) NOT NULL DEFAULT '',
  `link` varchar(200) NOT NULL DEFAULT '',
  `content` longtext NOT NULL,
  `description` longtext NOT NULL,
  PRIMARY KEY (`id`),
  KEY `rstest_article_89f89e85` (`source_id`),
  CONSTRAINT `source_id_refs_id_c47b907b` FOREIGN KEY (`source_id`) REFERENCES `rstest_source` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=606 DEFAULT CHARSET=utf8;

我正在从另一个具有相同字符集的数据库中获取文本,如下所示:

_cursor.execute('SELECT title,link,content,descr,channel FROM articles')
    rows = _cursor.fetchall()
    for row in rows:
        article = Article(source=src,title=row[0],link=row[1],content=row[2],description=row[3])
        article.save()

任何帮助将不胜感激。

4

2 回答 2

4

尝试更改表格的排序规则。

ALTER TABLE rstest_article CHARACTER SET utf8 COLLATE UTF8_general_ci;

或仅更改一列的排序规则。

ALTER TABLE rstest_article MODIFY COLUMN title varchar(200) DEFAULT '' CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

您还可以检查您的 python 代码,您如何存储标题。

title = u'unicode_string'.encode('unicode_escape')
于 2012-06-18T19:48:33.053 回答
0

需要对特殊字符进行转义,Mysqldb有escape_string函数用于对特殊字符进行转义为:
假设一个变量title存储字符串,需要在db的title列中输入。

标题 = MySQLdb.escape_string(标题)

为了从标题字符串中转义' 和 "您必须创建类似以下的查询:

q = ''' 插入 rstest_article(title) values("%s") ''' % (title)

这应该可以解决问题:)

于 2012-06-19T02:35:31.920 回答