php加ACCESS崩溃的乱码

99guo 2014-05-16 10:16:55
状态:网页编码是gb2312,php 使用pdo 连接access,插入access没有问题在access数据库显示正确的中文。
错误说明:但使用pdo读取access内容时。经常出现部分中文显示乱码。弄得我头大。
为什么读取出来后会有部分乱码。各位大神指点。


中文乱码如下:
华南再生资源产业基地发展历程和今后的发展规划鲆约霸角亩分竞途鲂摹Q

前半段是正确的后面是乱码
...全文
317 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
99guo 2014-05-16
  • 打赏
  • 举报
回复
版主救命,高手救命。救救小弟。
99guo 2014-05-16
  • 打赏
  • 举报
回复
上图access里的中文很清晰。没乱码的。就是读出来后显示乱码。 我直接用asp测试。也能正确显示。 下面是asp的代码: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <% dim conn,connstr 'on error resume next connstr="DBQ="+server.mappath("hndb.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" Set conn=Server.CreateObject("ADODB.CONNECTION") conn.open connstr Set rs=Server.CreateObject("ADODB.RecordSet") sql="select * from news where id=20 order by id desc" rs.Open sql,conn,1,1 if rs.eof and rs.bof then response.Write("没有记录") else response.Write( "有记录" ) end if %> <% = rs("content") %> </body> </html>
99guo 2014-05-16
  • 打赏
  • 举报
回复
xuzuning 2014-05-16
  • 打赏
  • 举报
回复
在access看到的不乱码? 截个图看看
99guo 2014-05-16
  • 打赏
  • 举报
回复
版主有没解决思路或办法?
99guo 2014-05-16
  • 打赏
  • 举报
回复
引用 10 楼 xuzuning 的回复:
分析
preg_match_all('/">,([^<]+)/', $s, $r);
$a = explode('组长', $r[1][1]);
$t = $a[1];
echo bin2hex($t{0});
echo substr($t, 1);
乱码部分为: 与大家一起将华南项目做大做强,真正成为肇庆市进口再生资源集约化、规范化发展的示范基地,与会人员报以热烈的掌声。 应该是你在插入数据时就已经乱码了
内容是这样,我在access也看到是这样的。 但为什么读出来就乱码呢??这点就真的不明白。
xuzuning 2014-05-16
  • 打赏
  • 举报
回复
分析
preg_match_all('/">,([^<]+)/', $s, $r);
$a = explode('组长', $r[1][1]);
$t = $a[1];
echo bin2hex($t{0});
echo substr($t, 1);
乱码部分为: 与大家一起将华南项目做大做强,真正成为肇庆市进口再生资源集约化、规范化发展的示范基地,与会人员报以热烈的掌声。 应该是你在插入数据时就已经乱码了
99guo 2014-05-16
  • 打赏
  • 举报
回复
高手啊。快来
99guo 2014-05-16
  • 打赏
  • 举报
回复
引用 7 楼 vgy12304 的回复:
在php 连接数据库的类里面增加 mysql_query("set names gbk'"); 试试看 在php文件的头上加上 header("Content-Type: text/html; charset=gbk");
兄弟,我的是连access。如果使用MYSQL是没问题的。
vgy12304 2014-05-16
  • 打赏
  • 举报
回复
在php 连接数据库的类里面增加 mysql_query("set names gbk'"); 试试看 在php文件的头上加上 header("Content-Type: text/html; charset=gbk");
99guo 2014-05-16
  • 打赏
  • 举报
回复
下面是base64的结果: Jm5ic3A7PHAgc3R5bGU9IlRFWFQtQUxJR046IGNlbnRlciI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OifLzszlJztGT05ULVNJWkU6IDE4cHQiPsrQzq+zo86vu8a9qNGrwsrV/riusr/DxcC01LDH+LX30dA8L3NwYW4+PC9wPjxwIHN0eWxlPSJURVhULUFMSUdOOiBjZW50ZXIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTony87M5Sc7Rk9OVC1TSVpFOiAxOHB0Ij4mbmJzcDs8L3NwYW4+PC9wPjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTont8LLzl9HQjIzMTInO0ZPTlQtU0laRTogMTZwdCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7MjAxNMTqM9TCMTHI1aOs1tC5stXYx+zK0M6vs6POr6Gi1+nWr7K/s6S7xr2o0avCysrQzq/X6davsr+hosrQufrNwb7WoaLK0Lu3saO+1qGivq3Qxb7Wtciyv8PFwey1vKOs1Nq548T+z9jOr8rpvMfVxbnwuumhos/Yzq+zo86vx/G9oce/oaK4sc/Ys6TOwtXxxfShotXYx+zK0LijvNO1ws2218q/2LnJ09DP3rmry762rcrCs6SzwsP30MK1yMXjzazPwqOs3bDB2dSwx/i199HQoaO7xrOjzq/U2sz9yKHByzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6J7fCy85fR0IyMzEyJztGT05ULVNJWkU6IDE2cHQiPs7SPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTont8LLzl9HQjIzMTInO0ZPTlQtU0laRTogMTZwdCI+uavLvratysKzpLPCw/e/xrXEu+OxqLrzo6zWuLP21LDH+L3xxOq/qr7Wwby6w6OsPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTont8LLzl9HQjIzMTInO0ZPTlQtU0laRTogMTZwdCI+0M7Kxs+yyMujrDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6J7fCy85fR0IyMzEyJztGT05ULVNJWkU6IDE2cHQiPtKqx/M8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Oie3wsvOX0dCMjMxMic7Rk9OVC1TSVpFOiAxNnB0Ij649zwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6J7fCy85fR0IyMzEyJztGT05ULVNJWkU6IDE2cHQiPsbz0rW808e/udzA7aOsyeixuNKquPzQwqOsvLzK9dKqPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTont8LLzl9HQjIzMTInO0ZPTlQtU0laRTogMTZwdCI+vfiyvTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6J7fCy85fR0IyMzEyJztGT05ULVNJWkU6IDE2cHQiPqOsudzA7dKqyc/MqL3Xo7vSqsfz1LDH+NCt1vrV/riusr/Dxb6hv+zN6rPJPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTont8LLzl9HQjIzMTInO0ZPTlQtU0laRTogMTZwdCI+yKvK0Dwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6J7fCy85fR0IyMzEyJztGT05ULVNJWkU6IDE2cHQiPqG20NDStbei1bm55ruuobejrMrQu7exo77WPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTont8LLzl9HQjIzMTInO0ZPTlQtU0laRTogMTZwdCI+0qrT68qhsaOz1sPcx9C5tc2oo6w8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Oie3wsvOX0dCMjMxMic7Rk9OVC1TSVpFOiAxNnB0Ij7Xpb30zeqzybnmu667t8bAo6zS1ML61+PUsMf4xvPStbL6xNy1xNDox/Oju82syrHSqsfz1f64rrK/w8XHv7uvt/7O8aOsye7I69Swx/jG89K1zP3IodLivPujrMi3saPG89K1y7PA+8n6svq+rdOqoaPX7rrzo6y7xrOjzq88L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Oie3wsvOX0dCMjMxMic7Rk9OVC1TSVpFOiAxNnB0Ij7LtTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6J7fCy85fR0IyMzEyJztGT05ULVNJWkU6IDE2cHQiPqOsy/u9q7zM0Pi1o8jOytDV/riuu6rEz8/uxL/XqNTw0KHX6dfps6To0+u087zS0rvG8L2ru6rEz8/uxL/X9rTz1/bHv6Os1ebV/bPJzqrV2MfsytC9+L/a1NnJ+tfK1LS8r9S8u6+hornmt7a7r7ei1bm1xMq+t7a7+bXYo6zT67vhyMvUsbGo0tTIyMHStcTVxsn5oaM8L3NwYW4+PC9wPjxwPjxpbWcgYWx0PSIiIHNyYz0iLi4vdXBsb2FkL2RheV8xNDA1MTUvMjAxNDA1MTUxNDI2MzM1MjI3LmpwZyIgd2lkdGg9IjU1MyIgaGVpZ2h0PSI0MTUiIC8+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OsvOzOU7Rk9OVC1TSVpFOiAxMC41cHQiPiZuYnNwOzwvc3Bhbj48L3A+PHA+PGltZyBhbHQ9IiIgc3JjPSIuLi91cGxvYWQvZGF5XzE0MDUxNS8yMDE0MDUxNTE0MjY0Mjk2NjEuanBnIiB3aWR0aD0iNTUzIiBoZWlnaHQ9IjQxNSIgLz48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6y87M5TtGT05ULVNJWkU6IDEwLjVwdCI+Jm5ic3A7PC9zcGFuPjwvcD48cD48aW1nIGFsdD0iIiBzcmM9Ii4uL3VwbG9hZC9kYXlfMTQwNTE1LzIwMTQwNTE1MTQyNjQ5ODQxNC5qcGciIHdpZHRoPSI1NTMiIGhlaWdodD0iNDE1IiAvPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpUaW1lcyBOZXcgUm9tYW47Rk9OVC1TSVpFOiAxMC41cHQiPiZuYnNwOzwvc3Bhbj48L3A+
xuzuning 2014-05-16
  • 打赏
  • 举报
回复
如果 #3 的 echo( $S_content); 出现乱码 那么请贴出 echo base64_encode($S_content); 的结果
99guo 2014-05-16
  • 打赏
  • 举报
回复
//自己写的操作access的类 class access_db{ private $db; //构造函数 function __construct($access_db_url) { try{ $this->db = new PDO("odbc:driver={microsoft access driver (*.mdb)};dbq=".realpath($access_db_url)) or die("Connect Error"); } catch (PDOException $e) {  echo( "Error: " . $e->getMessage() . "<br/>");  die(); } } public function get_recordset($strsql) { try{ return $this->db->query($strsql); } catch (PDOException $e) {  echo( "Error: " . $e->getMessage() . "<br/>");  die(); } } //分页查询,仅数据量在1万数据以内,且存在id自增序列的数据表有效 public function get_page($strsql,$page_index,$page_size) { try{ if ($page_index < 1) $page_index =1; if ($page_size < 1) $page_size = 30; $i_start = ($page_index-1) * $page_size; //开始记录 $i_end = $page_index * $page_size; //结束记录 $low_sql = strtolower($strsql); //取出order,排序字符 $ord_index = strpos($low_sql,"order") ; $order_sql = ""; if ($ord_index) { $order_sql = substr($strsql,$ord_index); } //取出where,条件字符 $where_sql = ""; $where_index = strpos($low_sql,"where") ; if ($where_index) { if ($ord_index) { $where_sql = substr($strsql,$where_index,($ord_index-$where_index)); } else { $where_sql = substr($strsql,$where_index); } } //取出from后的字符 $from_index = strpos($low_sql,"from") ; $from_sql = substr($strsql,$from_index); if ($where_index) { $from_sql = substr($strsql,$from_index,($where_index-$from_index)); }else { if ($ord_index) { $from_sql = substr($strsql,$from_index,($ord_index-$from_index)); } } //取出字段 $sel_index = strpos($low_sql,"select") ; $cut_start_index = $sel_index + strlen("select"); $colum_sql = substr($strsql, $cut_start_index,$from_index - $cut_start_index); $end_sql = substr($strsql,$cut_start_index); if ($i_start > 0) { //其他页 $sel_sql1 = "select top " . $i_start . " id " . $from_sql . " " . $where_sql . " " . $order_sql; if ($where_index) { $sel_sql2 = "select top " . $i_end . " " . $colum_sql . " " . $from_sql . " " . $where_sql . " and id not in (" . $sel_sql1 .") " . $order_sql ; } else { $sel_sql2 = "select top " . $i_end . " " . $colum_sql . " " . $from_sql . " where id not in (" . $sel_sql1 .") " . $order_sql ; } } else { //第一页 $sel_sql2 = "select top " . $i_end . " " . $colum_sql . " " . $from_sql . " " . $where_sql . $order_sql ; } /* echo("from=" . $from_sql . "<br/>"); echo("where=" . $where_sql . "<br/>"); echo("ord=" . $order_sql . "<br/>"); echo("sql1=" . $sel_sql1 . "<br/>"); echo("sql2=" . $sel_sql2 . "<br/>"); */ return $this->db->query($sel_sql2); //执行加工了的sql } catch (PDOException $e) {  echo( "Error: " . $e->getMessage() . "<br/>");  die(); } }
99guo 2014-05-16
  • 打赏
  • 举报
回复
//下面是显示的代码 <?php include("dbclass/dbclass.php"); $access = new access_db("service/hndb.#db"); $edt_id = $_REQUEST['id'] ; $S_content = ""; $sql="select content from news where id=$edt_id "; $rs =$access->get_recordset($sql); if ($rs){ if ($row = $rs->fetch() ) { $S_content = $row[0]; $S_content = str_replace("../","",$S_content); echo( $S_content); }; }; ?>
99guo 2014-05-16
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <script type="text/javascript" src="../xheditor-1.2.1/jquery/jquery-1.4.4.min.js"></script> <script type="text/javascript" src="../xheditor-1.2.1/xheditor-1.2.1.min.js"></script> <script type="text/javascript" charset="utf-8" src="../xheditor-1.2.1/xheditor_lang/zh-cn.js"></script> <script type="text/jscript"> $(pageInit); function pageInit() { //$.extend(XHEDITOR.settings,{shortcuts:{'ctrl+enter':submitForm}}); $('#text_content').xheditor({upLinkUrl:"upload.php",upLinkExt:"zip,rar,txt",upImgUrl:"upload.php",upImgExt:"jpg,jpeg,gif,png",upFlashUrl:"upload.php",upFlashExt:"swf",upMediaUrl:"upload.php",upMediaExt:"wmv,avi,wma,mp3,mid"}); } </script> <style type="text/css" > body{ font-size:12px; } .mytable{ border-collapse:collapse; } .mytable td { border:1px solid black; padding:3px 3px 3px 3px; } </style> </head> <body> <?php include '../dbclass/dbclass.php'; $access = new access_db("hndb.#db"); $edt_id = -1; $s_title =""; $S_content = ""; $s_imageurl = ""; $s_ctime = date('Y-m-d H:i:s',time()); if (!empty($_REQUEST["edit_id"])) { $edt_id = $_REQUEST["edit_id"]; } if(!empty($_POST['btn_ok'])) { if (!empty($_REQUEST["text_title"])) { //mysql_real_escape_string转换特殊符号 //stripslashes还原函数 $s_title = $_REQUEST["text_title"]; } if (!empty($_REQUEST["text_content"])) { $S_content = $_REQUEST["text_content"]; } if (!empty($_REQUEST["text_imageurl"])) { $s_imageurl = $_REQUEST["text_imageurl"]; } if (!empty($_REQUEST["text_time"])) { $s_ctime = $_REQUEST["text_time"]; } $s_title = str_replace("'","''", $s_title); $s_imageurl = str_replace("'","''",$s_imageurl); $S_content= str_replace("'","''",$S_content); $sql="insert into news(title,imageurl,content,ctime) values ('$s_title','$s_imageurl','$S_content',#$s_ctime#) "; if ($edt_id !=-1 && $edt_id !="") { $sql="update news set title='$s_title',imageurl='$s_imageurl',content='$S_content',ctime=#$s_ctime# where id=$edt_id "; } if(! $access->exec_sql($sql)) //插入数据 { echo("<script>alert('保存失败');</script>"); } else { if ($edt_id ==-1 or $edt_id =="") { $rs = $access->get_recordset("select max(id) from news"); if ($tmprow = $rs->fetch()) { $edt_id = $tmprow[0]; } } echo("<script>alert('保存成功');</script>"); }; } else { if ($edt_id !=-1 && $edt_id !="") { $sql="select id,title,imageurl,content,ctime from news where id=$edt_id "; $rs =$access->get_recordset($sql); if ($rs){ if ($row = $rs->fetch()) { $s_title = $row[1]; $s_imageurl = $row[2]; $S_content = $row[3]; $s_ctime = $row[4]; }; }; } } $s_title = str_replace("''","'", $s_title); $s_imageurl = str_replace("''","'",$s_imageurl); $S_content= str_replace("''","'",$S_content); echo($sql . "<br/>"); echo($S_content . "<br/>"); /* $s_title = iconv('gbk','utf-8',$s_title ); $s_imageurl = iconv('gbk','utf-8',$s_imageurl); $S_content = iconv('gbk','utf-8',$S_content); */ ?> <form id="form1" name="form1" method="post" action="newsedit.php"> <div style="width:850px;height:100%; border:1px solid black" > <table class="mytable" style="width:100%;" > <tr style="height:24px; background-color:#BEDCD8" > <td style="width:100px;" > </td> <td style="width:750px; text-align:center; height:26px; "><strong>新闻管理</strong></td> </tr> <tr style="height:24px;" > <td>标题:</td> <td><label for="text_title"></label> <input type="text" name="text_title" value="<?php echo($s_title) ?>" style="width:98%; line-height:20px;" id="text_title" /></td> </tr> <tr > <td>时间:</td> <td> <input type="text" name="text_time" value="<?php echo($s_ctime) ?>" style="width:98%; line-height:20px;" id="text_title" /></td> </tr> <tr > <td>内容:</td> <td> <textarea id="text_content" name="text_content" rows="12" cols="80" style="width:750px; height:500px; "> <?php echo($S_content) ?> </textarea> </td> </tr> <tr > <td></td> <td style="text-align:center;"> <input type="hidden" id="edit_id" name="edit_id" value="<?php if ($edt_id != -1) {echo($edt_id);}; ?>"/> <input type="submit" name="btn_ok" id="btn_ok" value="提交" /> <input type="button" onclick="window.location='newsList.php'" name="btn_ok" id="btn_ok" value="退出" /> </td> </tr> </table> </div> </form> </body> </html>
xuzuning 2014-05-16
  • 打赏
  • 举报
回复
你应该给出原始的数据
比如 打印出乱码的变量是 $txt
那么 echo base64_encode($txt);
贴出结果

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧