UTF-8下检测中文用户名

zilingzhi 2010-07-30 10:03:42
做了个注册界面,可以用中文做用户名。

但是检测是否存在用户名出了问题,如果是用英文用户名注册,程序能检测出数据库是否存在相同的用户名。但如果用中文注册,就检测不出来了。求解。
...全文
351 点赞 收藏 24
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zilingzhi 2010-08-01
通过,只需要加对提取的值encodeURIComponent就可以了。

其他的解码啊什么的,都是画一条蛇再画上两只腿。
发分。
回复
zilingzhi 2010-08-01
怎么都不行呢。
回复
jianglin28290 2010-07-30
你能不能把传过去的值输出来看一下
回复
Dleno 2010-07-30
前台文件是utf-8吗?
相关JS文件是utf-8吗?

encodeURIComponent这个是要要的,你在PHP页里,接收到后直接打印出来,ajax得到后再弹出,看下是否是正常的???
回复
zilingzhi 2010-07-30
encodeURIComponent

urldecode

都不管用

我也认为IE传递数据时出了问题。有没有会的啊
回复
jianglin28290 2010-07-30
也许IE上传的时候转码了,你在php端加上urldecode试一下
回复
amani11 2010-07-30
xmlhttp.open("GET","user_ck.php?username="+encodeURIComponent(document.getElementById("username").value),true);

改成这样试试

回复
zilingzhi 2010-07-30
不是编码的问题。这个判断我是用AJAX+php。
现在问题已经出了点眉目,很可能是AJAX出现问题了。

在IE6.0中,出现这个问题。在FF中,又没有这样的情况。搞得头很大。看来要重新梳理AJAX。
//传输方式
xmlhttp.open("GET","user_ck.php?username="+document.getElementById("username").value,true);
回复
Alfredknox 2010-07-30
这个是编码的问题吧
回复
zilingzhi 2010-07-30
数据库编码utf8-bin
页面程序编码:utf-8
header("Content-type:text/html;charset=UTF-8");
$username=trim($_GET["username"]);

$sql="select * from menber where name='$username'";
$query=mysql_query($sql);
$rst=mysql_fetch_object($query);
mysql_close($id);
if ($rst==false)
{
echo 'false';
}
else
{
echo 'true';
}
回复
SICTXK 2010-07-30
只要编码正确,这样的字符都可以。
SELECT * FROM `user` WHERE `login_name` = '○o佑鉺釘ㄨ'
回复
CunningBoy 2010-07-30
数据库的编码是什么?
回复
骄傲青蛙 2010-07-30
你检查数据库用户名的语句是??
回复
cxrcool 2010-07-30
数据库的编码是否正确?
回复
caizhuguanguan 2010-07-30
你接受的时候


//AJAX GET传来的值 解码
$kahao=iconv("utf-8","gb2312",urldecode($_GET['kahao']));
$leixing=iconv("utf-8","gb2312",urldecode($_GET['leixing']));
$qymc=iconv("utf-8","gb2312",urldecode($_GET['qymc']));
$gzsj=iconv("utf-8","gb2312",urldecode($_GET['gzsj']));
$daiyu=iconv("utf-8","gb2312",urldecode($_GET['daiyu']));
$cc=iconv("utf-8","gb2312",urldecode($_GET['cc']));
$date=date("Y-m-d H:i:s");
回复
softfc 2010-07-30
[Quote=引用 19 楼 zilingzhi 的回复:]
Ajax发送中文、PHP接收
这个比较复杂:
Ajax中先用encodeURIComponent对要提交的中文进行编码
PHP中:
$GB2312string=iconv( 'UTF-8', 'gb2312//IGNORE' , $RequestAjaxString);

PHP写入MySQL数据库
建立conn时,query一下set names "gb2312"


在网上……
[/Quote] utf-8转化成gb2312 有可能丢字符哦,建议 还是全部统一起来
回复
kyzy_yy_pm 2010-07-30
[Quote=引用 19 楼 zilingzhi 的回复:]
Ajax发送中文、PHP接收
这个比较复杂:
Ajax中先用encodeURIComponent对要提交的中文进行编码
PHP中:
$GB2312string=iconv( 'UTF-8', 'gb2312//IGNORE' , $RequestAjaxString);

PHP写入MySQL数据库
建立conn时,query一下set names "gb2312"


在网上……
[/Quote]

呵呵,楼主不要偷懒,只不过加了两个方法而已嘛,何必那么愁苦
回复
zilingzhi 2010-07-30
Ajax发送中文、PHP接收
这个比较复杂:
Ajax中先用encodeURIComponent对要提交的中文进行编码
PHP中:
$GB2312string=iconv( 'UTF-8', 'gb2312//IGNORE' , $RequestAjaxString);

PHP写入MySQL数据库
建立conn时,query一下set names "gb2312"


在网上找的,先试验一下。看样子AJAX发送中文是比较郁闷。
回复
kyzy_yy_pm 2010-07-30
ajax好像不能直接将汉字传过去请用encodeURI()转下
回复
kyzy_yy_pm 2010-07-30
问题所在:document.getElementById("username").value//encodeURI(document.getElementById("username").value)


ajax传过来的是utf-8的,你的数据库如果不是相同的字符集的话需要转码或操作才对
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告