php中文乱码
一个简单的数据库插入界面和后台
add.html
<script type="text/javascript" language="javascript">
function onAddItem()
{
var xmlhttp;
var workcontent = $("#tb_content").attr("value");
var contact = $("#tb_contact").attr("value");
var remark = $("#tb_remark").attr("value");
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
var requestStr = "add.php?content="+workcontent + "&contact="+contact +"&remark="+remark;
xmlhttp.open("GET",requestStr,true);
xmlhttp.send();
alert(requestStr);
}
</script>
后台 add.php
<?php
$workcontent = $_REQUEST["workcontent"];
$contact = $_REQUEST["contact"];
$remark = $_REQUEST['remark'];
include 'conn.php';
$sql = "insert into WorkContentTable(workcontent,contact,remark) values('$workcontent','$contact','$remark')";
$issuccess = @mysql_query($sql);
if(!issuccess){
echo "添加不成功!";
}else{
$str = "添加了一条数据,业务内容为:" + $workcontent + ",联系人为:" + $contact + ",备注为:" + $remark;
echo $str;
}
?>
mysql的编码为默认的utf-8
在firefox浏览器中操作,mysql为中文正常显示
在IE中操作,mysl中文乱码
add.php?workcontent=测试&contact=test&remark=ss
firefox和ie均echo出乱码
本人php新手 这个中文乱码问题搞的真纠结
网上找的方法都试过了 没用 iconv函数转码之后为空串 PHP MySQL
[解决办法]
遇到过类似问题,不懂其中原因,当时我这样
$bm = array('UTF-8','GBK');
$charTest;
foreach($bm as $c){
if( $tag === iconv('UTF-8', $c, iconv($c, 'UTF-8', $tag))){//转换编码后是不是相等
$charTest = $c;
break;
}
}
if($charTest == 'GBK'){
$tag = iconv('GBK', 'UTF-8', $tag);
}
思路就是PHP接收到参数后两次iconv比较是否相等来判断是否是utf-8,如果不是,就转换
当时我的问题是解决了的 楼主可以试试能否解决你的问题
[解决办法]
add.php 行首加一句:header("content-type:text/html;charset=utf-8");
[解决办法]
你的add.html 加上 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 这句
且两个文件都另存为utf-8编码后再试试。
[解决办法]
你插入数据时没有 set names utf8,那么读取时 加了更糟
你的代码中不是有 echo $str; 吗?改成
echo base64_encode($str);
贴出结果,供分析
[解决办法]
不知道你将 header("content-type:text/html;charset=utf-8"); 这句加了没有,贴出修改后代码看看。
另外,贴出乱码后的截图出来。
[解决办法]
你的 “业务内容为:”、“,联系人为:”、“,备注为:”是 utf-8 的
而 3 个“测试”却是 gbk 的
放在一起能不乱码吗?
[解决办法]
首先你确认下你的数据表编码,确认下你的文件编码,贴出对应的结果,供参考。