php - 使用 PHP 在 MySQL 中损坏 UTF8 字符

标签 php mysql unicode utf-8

我注意到,在处理一些非正常拼写的名称(即英国/美国标准字母表)时,我在插入记录到数据库中实际显示的内容时会丢失。我已经安静地阅读了一些有关排序规则类型的内容,我认为这是导致问题的原因,但不确定是否是这种情况,或者我仍然做错了,因为我的问题仍然存在。

下面是我正在创建的记录以及数据库结构的示例,您还可以看到姓氏字段有“ö”,当我查找记录时,我实际上看到了姓氏“Körner”

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 查询时,它保存得很好。

最佳答案

看来问题最终还是出在 PHP 上,而且我没有设置字符集。

对于mysql

mysql_set_charset('utf8');

对于mysqli

mysqli_set_charset('utf8');

引用https://akrabat.com/utf8-php-and-mysql/

关于php - 使用 PHP 在 MySQL 中损坏 UTF8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52916246/

相关文章:

java - 在 Java 中使用正则表达式转义双斜杠

PHP 登录/身份验证/ session /API/ token

php - MySQL SELECT COUNT 从一个表和另一个表中选择 ID?

php - 我可以在准备好的语句中参数化表名吗?

Java:如何删除 £ 之前出现的 Â 字符

winapi - ExtTextOut不显示下标字符

php - 使用 symfony2.3 进行单元测试验证器约束

php - 使用 Ajax 列出站点/ip 端口状态

java - Java和MySQL模拟预约: Compare hour,日期和Classroom

mysql - 将 MySQL 查询转换为 Percona pt-archiver 字符串