使用PHP在MySQL中损坏UTF8字符

时间:2018-10-21 14:18:53

标签: php mysql unicode utf-8

在处理一些非正常拼写的名称时,我已经注意到,例如,我将记录插入数据库中实际显示的内容后,标准字母UK / US迷路了。我已经对Collat​​ion类型进行了一些阅读,这是我认为是导致此问题的原因,但是不确定是这种情况还是由于我的问题仍然存在,我还是做错了。

以下是我正在创建的记录以及数据库结构的示例,并且您还可以看到last_name字段具有“ö”,当我查找记录时,我实际上看到了last_name“Körner” < / p>

CREATE TABLE `data` (
  `id` bigint(20) NOT NULL,
  `profile_id` int(11) NOT NULL,
  `first_name` varchar(100) NOT NULL,
  `last_name` varchar(100) NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

ALTER TABLE `data`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `profile_id` (`profile_id`);

ALTER TABLE `data`
  MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT;


INSERT IGNORE INTO data (profile_id, first_name, last_name) VALUES (1, 'Brent', 'Körner');

last_name上的字段排序规则设置为'utf8_general_ci',据我了解或应该说可以解决此问题。

这似乎是我做错了/ PHP遗漏的事情,因为当我在PhpMyAdmin中执行INSERT查询时,它可以很好地保存。

1 个答案:

答案 0 :(得分:1)

看来问题最终归结于PHP,而我没有设置字符集。

对于mysql

mysql_set_charset('utf8');

对于mysqli

mysqli_set_charset('utf8');

ref https://akrabat.com/utf8-php-and-mysql/