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'") 是针对数据库的。 怎么将while循环里的值得取出来啊? 为什么一个内容抓去不出来呢? 求网站自动备份脚本思路 curl不能访问cookie????? sql语句在查询分析器中可以运行,php的mssql_query却报错: 这个正则表达式如何写? 实现类似google搜索结果 汉字截取无乱码 关键字高亮显示(参照别人的代码,自己修改了一下) 希望对大家有用 谁知道那儿有PHP下载? 请问如何把上传的图片装入MySql中? 如何循环带条件的数组 。。。还得接着求助。。关于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'") 是针对数据库的。