使用php在mysql中中断utf8字符

csga3l58  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(345)

我注意到,在处理一些拼写不正常的名字时,例如标准字母uk/us,从我插入的记录到数据库中实际显示的内容,都会丢失。关于排序规则类型,我做了一些安静的阅读,我认为这是导致问题的原因,但不确定这是否是事实,或者我仍然做错了,因为我的问题仍然存在。
下面是我正在创建的一个记录以及我的数据库结构的示例,您也可以看到last\u name字段有“ö", 当我查找记录时,我实际上看到了姓“k”㶓内尔”

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');

姓氏的字段排序规则设置为“utf8\u general\u ci”,我理解或应该说,它可以解决这个问题。
这似乎是我用php做的错事,因为当我在phpmyadmin中执行insert查询时,它保存的很好。

4zcjmb1e

4zcjmb1e1#

似乎问题最终归结于php,我没有设置字符集。
对于mysql

mysql_set_charset('utf8');

对于mysqli

mysqli_set_charset('utf8');

裁判https://akrabat.com/utf8-php-and-mysql/

相关问题