首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

php中文乱码解决办法

2013-07-09 
php中文乱码一个简单的数据库插入界面和后台add.htmlscript typetext/javascript languagejavascrip

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编码后再试试。
[解决办法]
引用:
Quote: 引用:

add.php 行首加一句:header("content-type:text/html;charset=utf-8");

header("content-type:text/html;charset=utf-8"); 
加上mysql_query("set names utf8")这句也试过了
均不行。。
你插入数据时没有 set names utf8,那么读取时 加了更糟

你的代码中不是有 echo $str; 吗?改成 
echo base64_encode($str);
贴出结果,供分析
[解决办法]
不知道你将 header("content-type:text/html;charset=utf-8");  这句加了没有,贴出修改后代码看看。

另外,贴出乱码后的截图出来。
[解决办法]
你的 “业务内容为:”、“,联系人为:”、“,备注为:”是 utf-8 的
而 3 个“测试”却是 gbk 的
放在一起能不乱码吗?
[解决办法]
首先你确认下你的数据表编码,确认下你的文件编码,贴出对应的结果,供参考。

热点排行