php - PHP/MySQL 中的字符编码 (i/î/ï)

标签 php mysql

我在使用 PHP 将字符 i (ï/î) 放入 MySQL 数据库时遇到重音问题。我有 2 个名字,Myîa 和 Myïa,在插入后我的数据库中只有 Myïa。

表的排序规则设置为 utf8_unicode_ci,字段本身也是 utf8_unicode_ci。我检查了SCHEMATA 表 中的DEFAULT_CHARACTER_SET_NAME,它数据库设置为utf8

数据库.php:

$dbs_cnt = mysqli_connect($dbs_hst, $dbs_usr, $dbs_psw, $dbs_nme);
if (!$dbs_cnt) { die(mysqli_connect_error()); }
if (!mysqli_set_charset($dbs_cnt, "utf8")) { echo mysqli_error($dbs_cnt); }

script.php

header('Content-Type: text/html; charset=utf-8');
include 'database.php';
// irrelevant code
$SQL = "
    INSERT INTO " . $dbs_tbl . " (`Character`)
    VALUES ('" . $CHR_NME . "')
";
if (!mysqli_query($dbs_cnt, $SQL)) { echo mysqli_error($dbs_cnt); }

在我最近遇到这些名字之前,一切似乎都运行良好。

当一条记录已经存在时尝试手动将它们输入数据库时​​,出现以下错误:

#1062 - Duplicate entry 'Myîa' for key 'PRIMARY' 
#1062 - Duplicate entry 'Myïa' for key 'PRIMARY' 

我一直在研究排序规则(因为它是 latin1_swedish_ci),但这似乎没有帮助。在检查了类似的问题后,我也添加了标题,但也没有结果。

我错过了什么?

最佳答案

将归类设置为“utf8_bin”。字形 i/ï/î 在“utf8_unicode_ci”中是相同的。 (或者选择另一种将这些字母视为不同的排序规则。)

关于php - PHP/MySQL 中的字符编码 (i/î/ï),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33256366/

相关文章:

PHP 图像调整功能不能正常工作

php - 扫描字符串并用链接替换标签

php - PDO:绑定(bind)参数和连接字符串之间的区别

MySQL 查询权限语法

mysql - 仅加入值与变量匹配的特定行

MySQL 从另一个表连接计数匹配的记录

Codeigniter 上的 mySQL 分层查询

mysql转储: how to fetch dependent rows

php - 使用codeigniter在mysql中输入数据

Php日历星期随机用户计算