php 向数据库发送中文字符无法查询?

数据库中有这个字段,用sql语句直接可以查,但是php发送查询就查不了,数据表的格式是utf8_general_ciphp保存的utf-8,求解... 数据库中有这个字段,用sql语句直接可以查,但是php发送查询就查不了,数据表的格式是utf8_general_ci
php保存的utf-8,求解
展开
 我来答
www111wt
推荐于2016-07-09 · TA获得超过291个赞
知道小有建树答主
回答量:140
采纳率:0%
帮助的人:153万
展开全部

你的问题可能是数据库连接时未指定字符集:$conn->query("set names utf8");

详细如下:

将中文字符转换一下,可能你的网页编码是ansi非utf-8的:

$w=iconv("gb2312","utf-8",$w);

不迅卜拦过我不确定这样做你能否成功。关于字符有以下几点你看下:

  1. 数据库连接时: $conn->query("set names gbk");

  2. 数据库的字符集:建议建立数据库时就指定字符集,比如gbk或者utf-8,这样你就没必要为单独的表或者字段指定字符集

  3. 网页字符:<META CONTENT="text/html; charset=gbk" HTTP-EQUIV="Content-Type" />

 保持着三者使用的字符集一样,基本能解决你的问题。

当然,在使亩胡用ajax时。js传递过来的是utf-8,如果你的php文件和数据库使用的是中文字符集如gbk,gb2312,那么就需要对该值用iconv函数转换下字符集,如弊差:$w=iconv("utf-8","gb2312",$w);

总之,需要这几块的字符集保持一致。

追问
php保存的utf8,数据库那边是utf8_general_ci,还没用html
追答
数据库连接指定字符空间了吗?
$conn->query("set names gbk");
在php文件最顶部加入:
header("Content-type: text/html; charset=utf-8");
windblast
2015-04-04 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13622
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部

提供旦圆几点供参考:


一、在用PHP进行数据库查询的时候,指定数据库的编码格式:

mysql_query("set names utf8");

二、检查PHP代码保存文件格式,应宽神该是以 utf8 格式保存。


三、设置html,设置语言编码为 utf8 格式。


以上三个都需要设置一致,模巧塌且都是 utf8。

追问
我直接用php测试的,没用html传,而且php保存的是utf8
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式