我有一个名为Traduction
的表,其中包含以下两行:
francais |espagnol |allemand |anglais
-------------+-----------------+---------------+----------------
ORANGE litée |NARANJA ENCAJADA |ORANGEN GELEGT |ORANGE 1 LAYER
ORANGE LITEE |NARANJA ENCAJADA |ORANGEN GELEGT |ORANGE 1 LAYER
我的查询是:
SELECT * FROM T_TRADUCTION where francais= 'ORANGE LITEE';
此查询返回表的两行,而它应仅返回ORANGE LITEE
值(不是ORANGE litée
)的记录。
我不明白为什么。
答案 0 :(得分:1)
将数据库整理更改为plug in
将您的数据库latin1_general_cs
设置为DEFAULT CHARACTER
现在执行您的查询。
latin1
答案 1 :(得分:0)
尝试像这样纠正:
SELECT * FROM T_TRADUCTION where francais='ORANGE litée';
最诚挚的问候。
答案 2 :(得分:0)
正确获取编码很棘手,层次太多:浏览器, 页, PHP, 的MySQL。
您需要检查每层的数据流编码。
检查HTTP标头,标头。 检查请求正文中确实发送了什么。 别忘了MySQL几乎到处编码: 数据库 表 列 服务器整体 客户 确保到处都是正确的。
来自manual>
SET NAMES表示客户端将用于将SQL语句发送到服务器的字符集。因此,SET NAMES' cp1251'告诉服务器,“来自此客户端的未来传入消息是字符集cp1251。”它还指定了服务器用于将结果发送回客户端的字符集。 (例如,如果使用SELECT语句,它指示要用于列值的字符集。)