急求:PHP 中文写入数据库中文是问号,怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急求:PHP 中文写入数据库中文是问号,怎么解决相关的知识,希望对你有一定的参考价值。

php 写入到mysql后,中文全部是问号。后台读出来数据是中文正确的。
编码都是utf-8的
mysql_query("SET NAMES 'UTF8'",$conn);
mysql_query("SET CHARACTER SET UTF8",$conn);
MYSQL 版本是 4.1.20

要配置MySql的编码,你看下
http://asp3000.blog.163.com/blog/static/88061206200542655341462/
参考技术A 编辑器的编码,文件内 header("text/html;charset=utf8"); 或者meta设定utf-8 ,mysql里也要设定utf-8,mysql存储utf-8 保证没问题 参考技术B 首先保证你的字段名是utf8的 保证的话
如果是phpmyadmin 里有个选项 可以选择显示部分文字还是全部文字 在那设置
参考技术C 编码不一致的问题。你数据库设置了什么编码 比如是UTF-8 那么你页面也设置这个编码 并且使用header("Content-Type: text/html; charset=utf-8");让浏览器也使用这个编码 并且在连接数据库的时候 mysql_query("SET NAMES utf8"); 那么就不会出现乱码 问号 空白等情况了。 其实就是让数据库 页面 浏览器编码一致就可以

php pdo连接数据库 解决中文乱码问题(wordpress mysql 问号?? ??)

原文链接:http://blog.csdn.net/ysydao/article/details/11002295

PHP 用pdo连接数据库时出现中文乱码问题解决办法

1.array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"),在与数据库建立连接的时候的第四个参数
   example:    
    $dbh = new PDO($dsn,$user,$pass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"));
下面两种按理说应该也能,而且有网友验证了这一事实,但我没成功!
2.通过query():
     $dbh = new PDO($dsn,$user,$pass);
     $dbh -> query(‘set names utf-8‘);
3.通过esec(): 
     $dbh = new PDO($dsn,$user,$pass);
     $dbh -> exec(‘set names utf-8‘);

 

A.首先说下HTML中文乱码问题的解决方法。
比如有个index.html的页面(这里是指真正的静态页面,修改服务器的……伪静态的请看方案B)
1.在head标签里面加入这句
view plaincopy to clipboardprint

<head>   
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  

</head>  

<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>


2.将文件的编码存为UTF-8.记事本或Editplus等编辑器都有保存时选择编码的功能。

B.HTML和PHP混合的页面解决方案。
除了A方案说的那些之外。还要在文件的最上面加上下面这句代码。 
view plaincopy to clipboardprint?
<?php  

header("Content-type:text/html;charset=utf-8");   
?>  
<?phpheader("Content-type:text/html;charset=utf-8");?> 
注意header前面不要有任何的输出(echo/print/print_r/var_dump等PHP的输出语句,或者是你在“<?php”前面回车/空格)。否则会报错。
如果你用系统自带的Notepad保存为UTF-8编码的文件时会报错。
为什么呢?明明header已经写在最前面了。
不要着急,因为你看到的并不是真实的。实际上你的“<?php”标签前面已经存在了3个可恶的‘东东’,但普通编辑器看不到。如果你用UltraEdit打开并切换到16进制模式可以看到前面多了“EF BB BF”。这是跟Windows识别编码的方式有关。但我们的Apache却不认识这个,把它当成了输出。导致header出错。别怕,还是有解决的方法。
很简单,直接使用Editplus保存为UTF-8即可。因为Editplus的UTF-8是去除了BOM的。

C.纯PHP页面的中文乱码解决方案(数据是静态的)
只要在页面的开始加上 
view plaincopy to clipboardprint?
<?php  

header("Content-type:text/html;charset=utf-8");  

?>  


<?phpheader("Content-type:text/html;charset=utf-8");?> 
然后保存为UTF-8编码的文件即可。注意和方案B一样。注意用那些去除BOM的编辑器保存。否则还是会报错。

D.PHP+MySQL中文乱码解决方案
除了按方案C那样的做法外,还要在你的数据查询/修改/增加之前加入数据库编码。
view plaincopy to clipboardprint?
<?php  

 mysql_query(‘SET NAMES UTF8‘);   
//接下来的就是查出数据或者修改,增加咯   

?>  


<?phpmysql_query(‘SET NAMES UTF8‘);//接下来的就是查出数据或者修改,增加咯?> 

注意这里的UTF8和之前的不一样。中间没有横线。
通过以上应该就能解决PHP中文乱码的问题了。














































以上是关于急求:PHP 中文写入数据库中文是问号,怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

php 插入到mysql数据库的中文是问号?肿么解决?

PHP插入数据到数据库出中,中文出现乱码~~全是问号

s7-200 cpu224cn通信时,双击刷新后出现一个黄色的问号和Unknow字样 你是怎么处理的啊 急急急求!!!!

从mysql数据库读出的数据怎么是问号(?)

php在浏览器显示的中文是问号怎么处理

oracle11gR2中文全部显示为问号怎么解决