【发布时间】:2017-01-05 06:40:12
【问题描述】:
我的系统处理西班牙数据。我正在使用 laravel + mysql。我的数据库排序规则是 latin1 - 默认排序规则,我的表结构如下所示:
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) CHARACTER SET latin1 NOT NULL,
) ENGINE=InnoDB AUTO_INCREMENT=298 DEFAULT CHARSET=utf8mb4;
有几个问题:
我将数据从文件加载到数据库。这是一个好习惯 utf8_encode($name) 在插入数据库之前?我目前正在这样做, 否则一些比较抛出错误:
SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_unicode_ci,COERCIBLE) for operation '='如果使用 utf8_encode 是要走的路,我是否需要 utf8_encode 甚至我想搜索的名称?即选择...其中名称= utf8_encoded(name)?
是否有任何缺陷或更好的方法来处理上述问题?因为我第一次做西班牙语(带重音的字符)。
【问题讨论】:
-
我的印象是 MySQL 中的
VARCHARs 默认为 UTF8,因此您在使用它们时不必使用utf8_encode。 -
@MartinParkin 更新了我在没有 utf8 编码的情况下插入数据时遇到的错误。然后使用 = 过滤器进行选择。
标签: php mysql laravel encoding collation