mysql乱码 mysql存储时乱码。我想用AJAX将几个数据POST到服务器,对应php文件接收并将数据存入mysql,mysql_query函数的插入语句参数里的内容还是正确的,但存入数据库后,所有中文就都变成乱码了,用mysql_query函数读取出来的中文也都是乱码。我单独写了个不用$_POST参数,直接在php里用中文字符串存入数据的程序,读写中文都是正常的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个就是编码问题了,就要看你ajax 的文件编码是什么了,要检察的包裹mysql库的编码,ajax文件的编码,php文件的编码等等。。总之要统一呀。比如全是utf-8的当然也可以用到转码iconv 能说详细点吗,我上网查过,有说是网页编码和mysql连接编码不一致的,解决方法我试了,在php里加header("Content-Type:text/html;charset=gb2312"),在静态页里加<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />,连接mysql时用mysql_query("set names 'gb3212'"),改mysql的my.ini配置文件我都试过了,都不行我初学,麻烦说明白一点。 PHP,MYsql,网页文件编码方式都设置成UTF-8即可 看看你那个php文件,本身的编码是什么,GB2312的,还是其他的 <?php//header("Content-Type:text/html;charset=gb2312");session_start();$con = mysql_connect();if (!$con) { die('Could not connect: ' . mysql_error()); }//mysql_query("set names GBK");mysql_select_db("schedule", $con);$sql = "INSERT INTO event_des (name, des, hour, min, uid) VALUES ('".$_POST["name"]."','".$_POST["des"]."',".$_POST["hour"].",".$_POST["min"].",".$_SESSION['id'].")"; if(mysql_query($sql)) {// print_r($_POST); print_r($sql); print_r("Add event successful!"); } else { print_r("failed".mysql_error()); } mysql_close($con);?> 2楼已经说的很明白了.这是mysql的你没有建对数据库.你直接google "mysql charset"就知道了 你如果利用ajax的json传值。那你需要在服务端进行一个编码的转换,这种可能是99%的需要那么做的。iconv() 乱码情况执行步骤: (1)文件保存时(文件本身编码utf-8) (2)header("content-type:text/html; charset=utf-8") 或者在html中: <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> (3)写数据库设定字符集 mysql_query("set names utf8") (4)建立数据库和表时编码要统一成utf-8 问题解决了。网页的js里用encodeURIComponent编码中文数据,php里用iconv解码。但<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />mysql_query("set names 'gb3212'")都有什么用还是没搞懂,只弄明白了header("Content-Type:text/html;charset=gb2312")可以指定php输出的内容的编码,加了这一行,php返回给网页的中文,js可以正确读出了。 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />和header("Content-Type:text/html;charset=gb2312")作用是一样的,让浏览器用gb2312编码读取文本。mysql_query("set names 'gb3212'") 是针对数据库的。 php 调用google mapapi问题 if..else 与 ? : 的问题 phpMyAdmin打开登录后,右侧下边显示‘无法加载 mcrypt 扩展,请检查您的 PHP 配置’是怎么回事。 一个简单的插入语句 如何删除数组中的元素 appche主机头设置问题! 关于discuz!的事务管理,写过discuz!二次开发的进 mysql数据库里的数据是date类型的,取出来后怎么计算 建议版主们把一切关于讨论什么 JSP、PHP、ASP 哪个好的贴子一律删除. 请教各位高手!! 。。。还得接着求助。。关于PHP中如何把数组作为sql查询语句的条件,我的代码有问题 数据问题请教!!
当然也可以用到转码iconv
我初学,麻烦说明白一点。
//header("Content-Type:text/html;charset=gb2312");
session_start();
$con = mysql_connect();
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
//mysql_query("set names GBK");
mysql_select_db("schedule", $con);
$sql = "INSERT INTO event_des (name, des, hour, min, uid)
VALUES ('".$_POST["name"]."','".$_POST["des"]."',".$_POST["hour"].",".$_POST["min"].",".$_SESSION['id'].")";
if(mysql_query($sql))
{
// print_r($_POST);
print_r($sql);
print_r("Add event successful!");
}
else
{
print_r("failed".mysql_error());
}
mysql_close($con);
?>
就知道了
(1)文件保存时(文件本身编码utf-8)
(2)header("content-type:text/html; charset=utf-8")
或者在html中:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
(3)写数据库设定字符集 mysql_query("set names utf8")
(4)建立数据库和表时编码要统一成utf-8
但<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
mysql_query("set names 'gb3212'")都有什么用还是没搞懂,
只弄明白了header("Content-Type:text/html;charset=gb2312")可以指定php输出的内容的编码,
加了这一行,php返回给网页的中文,js可以正确读出了。
和
header("Content-Type:text/html;charset=gb2312")
作用是一样的,让浏览器用gb2312编码读取文本。mysql_query("set names 'gb3212'") 是针对数据库的。