Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MySQL中的字符编码(i/î;/ï;)_Php_Mysql - Fatal编程技术网

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

PHP/MySQL中的字符编码(i/î;/ï;),php,mysql,Php,Mysql,我对使用PHP放入MySQL数据库的字符I(ï/î)的重音有问题。我有两个名字,Myîa和Myïa,在插入之后,我的数据库中只有Myïa 表的排序规则设置为utf8\U unicode\U ci,字段本身也是utf8\U unicode\U ci。我已经检查了模式表中的DEFAULT\u CHARACTER\u SET\u NAME,该表对于数据库设置为utf8 database.php: $dbs_cnt = mysqli_connect($dbs_hst, $dbs_usr, $dbs_ps

我对使用PHP放入MySQL数据库的字符I(ï/î)的重音有问题。我有两个名字,Myîa和Myïa,在插入之后,我的数据库中只有Myïa

表的排序规则设置为utf8\U unicode\U ci,字段本身也是utf8\U unicode\U ci。我已经检查了
模式表
中的
DEFAULT\u CHARACTER\u SET\u NAME
,该表对于数据库设置为utf8

database.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' 
我一直在玩排序规则(因为它是拉丁语和瑞典语的),但这似乎没有帮助。在检查了类似的问题之后,我也添加了标题,但也没有结果


我缺少什么?

正确连接到mysql后,执行以下查询:
设置名称utf8


如果要将UTF8数据发送到服务器,则需要此链接。

我无法评论,因此我将此链接作为答案发送。下面的链接解决了我的一个类似问题。


我重新启动了系统,它工作了(也许重新启动mysql就足够了)。

将排序规则设置为“utf8\u bin”。符号i/ï/î在“utf8_unicode_ci”中是相同的。(或者选择另一个将这些字母视为不同的排序规则。)

考虑改用整数id作为主键。如果你真的需要那个字段是唯一的,也可以使用utf8_-bin。谢谢你,我将表和字段的排序规则都更改为utf8_-bin,然后插入这两个记录。
sudo gedit /etc/mysql/my.cnf

[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

[mysqld]
skip-character-set-client-handshake
collation-server = utf8_unicode_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8