Pyramid与SQLAlchemy中的Unicode

0 投票
2 回答
546 浏览
提问于 2025-04-17 05:22

我正在使用Pyramid和SQLAlchemy,但下面这段简化的代码:

u = u"\u201C"

m = M()
m.comment = u
m.user_id = 1
session.add( m )
session.commit()

给我带来了一个

UnicodeEncodeError: 'latin-1' codec can't encode character u'\u201c' in position 0: ordinal not in range(256)

我需要做什么来修复这个问题?

补充说明:

comment是一个“MEDIUMTEXT”类型的列,这是MySQL中的一种数据类型。

2 个回答

4

你可能需要把你的 comment 列的类型改成 Unicode,而不是 String

4

检查一下你的数据库表是否使用了除了unicode以外的编码方式。

另外,如果你希望在phpMyAdmin(或者你用来连接数据库的其他工具)中能正常阅读你的评论,你需要在应用程序的配置文件中的连接字符串后面加上:

?charset=utf8&use_unicode=0

这样你的连接字符串就应该是这样的格式:mysql://user:pass@localhost/dbname?charset=utf8&use_unicode=0

撰写回答