【发布时间】:2010-04-14 12:57:45
【问题描述】:
我在验证中文字符与其他中文字符时遇到问题,例如,我正在创建一个简单的密码脚本,该脚本从数据库中获取数据,并通过 get 获取用户输入。
我遇到的问题是出于某种原因,即使当你回显它们时字符看起来完全一样,我的 if 语句仍然认为它们是不同的。
我尝试使用 htmlentities() 函数对字符进行编码,数据库中的密码很好地编码,给了我一个有效的 '& #35441;' (我在里面放了一个空格来阻止它转换成汉字!)。
另一个用户输入值给了我很多有趣的字符。我认为必须打破它的唯一一件事是它以不同的方式编码,因此 php 认为它是 2 个完全不同的字符串。
有人有什么想法吗?
在此先感谢,
会
编辑:
感谢各位的快速响应,我将四处寻找将数据库编码设置为 UTF-8,但是目前,数据库的结果不是问题,它们使用 htmlentities 正确编码,这是我得到的结果$_GET 是导致问题的原因。
干杯,
会
【问题讨论】:
-
用于填充 $_GET 数组的编码是什么?如果它来自 HTML 表单,是否在指定正确编码的网页上?
-
Get 被禁止,这不仅在安全方面是个坏主意,而且还要求浏览器之间存在不一致问题。改用帖子。否认数据库有问题显然是错误的,如果它与您从客户端获得的值不一样,那就错了。
-
您是如何设置密码的(即 GET(或 POST)/csv 等)?显然与您尝试验证的方式不同。
标签: php utf-8 html-entities