Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 utf8字符问题_Php_Mysql_Utf 8_Character Encoding - Fatal编程技术网

Php mysql utf8字符问题

Php mysql utf8字符问题,php,mysql,utf-8,character-encoding,Php,Mysql,Utf 8,Character Encoding,我在页面中将所有字符集设置为“utf8”,在数据库中将所有排序规则(以及字段排序规则)设置为utf8\u general\u ci,并将此代码添加到connect.php mysql_set_charset('utf8',$connect); mysql_query("SET NAMES 'utf8'"); 虽然所有内容都是utf,但当我运行此查询时: “从title='toruń'”所在的标题中选择* 结果:它返回“toruń”和“torun”这两个词是不同的词 那你觉得呢? 有什么问题 谢

我在页面中将所有字符集设置为“utf8”,在数据库中将所有排序规则(以及字段排序规则)设置为
utf8\u general\u ci
,并将此代码添加到
connect.php

mysql_set_charset('utf8',$connect);
mysql_query("SET NAMES 'utf8'");
虽然所有内容都是utf,但当我运行此查询时:

“从title='toruń'”所在的标题中选择*

结果:它返回“
toruń
”和“
torun
”这两个词是不同的词

那你觉得呢?
有什么问题

谢谢

编辑:

如果不存在,则创建表
标题


id
int(11)非空自动增量,
title
varchar(255)不为空,
主键(
id
),
title
title
),


)ENGINE=MyISAM默认字符集=utf8自动增量=37

尝试使用。

问题在于,您选择的排序规则被设计为忽略特定的重音(很可能是一般的重音)

如果您希望存储一种特定的语言,而不是许多不同的语言,请尝试使用
utf8(语言)\u ci
(如果该语言不存在,可能还有另一种与您类似的语言)。否则,您可以尝试
utf8\u unicode\u ci
,它使用unicode排序算法,但我不确定这是否有区别

也可以使用<代码> UTF8BIN ,保证它们是不同的,但这是以牺牲不敏感度为代价的,这很可能更糟。


话虽如此,这并不一定是坏事:通过忽略重音,搜索将更加灵活,对于无法键入特定字符的人更容易使用。

如果您想要utf8\u bin,*\u ci不区分大小写,因此,重音被视为普通字母

您可以在phpmyadmin或mysql命令行中测试它吗转储表模式并将其添加到问题中。我在一个波兰网站上工作,但它不是本地的。是的,也许在搜索查询中这是好的,但在插入中这太糟糕了。因为我的伪代码类似于“如果(!exist_in_table('torun')),则创建_行(“torun”)。当我将“title”字段的排序规则更改为utf8_polish_ci时,我必须更改所有表或字段的排序规则。