Php 比较unicode输入与数据库字符串

Php 比较unicode输入与数据库字符串,php,mysql,html,utf-8,encode,Php,Mysql,Html,Utf 8,Encode,我一直在stackover中搜索,但没有找到问题的解决方案。 我需要将用户输入的字符串与mysql数据库中的现有字符串进行比较。 存储在数据库中的字符串如下所示: 徐ấ;t khẩ;u意思是:“徐ất khẩu): 文本框中的字符串用户输入为:“xuất khẩu“ 但是当我尝试比较2字符串、mb_编码、htmlentities等时。。但它并没有说字符串匹配 数据库使用utf-8通用ci,网站正确显示utf8字体 有人能给我这个问题的解决方案吗?在比较使用时,请确保: htm

我一直在stackover中搜索,但没有找到问题的解决方案。 我需要将用户输入的字符串与mysql数据库中的现有字符串进行比较。 存储在数据库中的字符串如下所示: 徐ấ;t khẩ;u意思是:“徐ất khẩu):

文本框中的字符串用户输入为:“xuất khẩu“

但是当我尝试比较2字符串、mb_编码、htmlentities等时。。但它并没有说字符串匹配

数据库使用utf-8通用ci,网站正确显示utf8字体


有人能给我这个问题的解决方案吗?

在比较使用时,请确保:

html_entity_decode($mysqlValue, ENT_QUOTES, 'UTF-8'); // Compare with the unprocessed user input.
(这将把HTML实体中的DB值解码为特殊字符。)

或:

(这将用户的输入从包含特殊字符的字符串编码为包含HTML实体的字符串。)


数据库中的文本是HTML实体,因此我将寻找一个基于此的解决方案。我怀疑UTF-8编码是个问题,但最好在函数中指定,以防万一。

对表字段使用“UTF-8通用ci”时,值会正确存储,但在比较字符串时会出现问题。例如,当与字符集和排序规则为utf-8 general ci的值进行比较时,字符串“tèst”和“test”将返回true

尝试将排序规则/字符集设置为utf8\u bin。这在执行字符串比较时更安全

但请记住,utf8_bin(ci)没有不区分大小写的版本,因此在保存之前,您必须将字符转换为小写


关于,

将以下内容添加到我的
.ini
文件解决了问题:

character-set-server = utf8  
collation-server = utf8_general_ci

我尝试了你的解决方案,但它不起作用$foo=$row[$column];//从数据库获取$bar=$value;//用户输入$foo=html\u实体\u解码($foo,“ENT\u引号”,“UTF-8”)@gaixixon您需要删除ENT_引号周围的引号,因为它是一个常量。如果您以注释中的方式编写代码(并假设$foo和$bar包含正确的DB/用户输入值),那么现在可以使用条件If($foo==$bar){echo'same';}或者{echo'not same';}进行测试。我想我已经发现了问题。在通过ajax调用将变量传递给PHP之前,我使用
$(“#checkname”).load(“modules/utils/checkname.PHP?tb=product&column=product_name&value=“+encodeURI(this.value))$userinput=rawurldecode($\u GET['value'])的操作某些函数:和
character-set-server = utf8  
collation-server = utf8_general_ci