UTF-8下检测中文用户名

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

但是检测是否存在用户名出了问题,如果是用英文用户名注册,程序能检测出数据库是否存在相同的用户名。但如果用中文注册,就检测不出来了。求解。
...全文
390 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
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的,你的数据库如果不是相同的字符集的话需要转码或操作才对
加载更多回复(4)

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧