[转帖]PHP MySQL中文内容显示乱码_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2240 | 回复: 0   主题: [转帖]PHP MySQL中文内容显示乱码        下一篇 
yanpeng
注册用户
等级:上等兵
经验:127
发帖:68
精华:0
注册:2011-12-26
状态:离线
发送短消息息给yanpeng 加好友    发送短消息息给yanpeng 发消息
发表于: IP:您无权察看 2014-12-8 15:47:58 | [全部帖] [楼主帖] 楼主

MySQL版本:mysql-4.1.21-win32.exe

Apache版本:apache_1.3.37-win32-x86-no_src.msi

操作系统:WinXP + SP2

PHP版本:php-4.4.3-Win32.zip

我的网站目前要支持中、英文,以后还需支持其它语言。

所以我在创建数据库时都用了utf8

我使用了PEAR + Smarty

PHP代码如下:

$user = DB_DataObject::factory(''users'');
$user->query("select * from users where user_id=1");
$user->fetch();
$smarty->Assign(''user'',$user);
$smarty->display(''index.tpl'');


模板文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>6666</title>
</head>
<body>
{$user->name}
</body>
</html>


但显示出来的是问号,英文的话就正常。

1.用PHPMyAdmin显示也能正常显示中文。

2.用命令提示符显示出来是乱码。

请问该如何解决此问题?谢谢。网上找了资料查看,但还是不行。

你的数据库里面存的是什么编码

数据库存为utf-8,还有在<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />的同时,把文件也要保存为utf-8格式。。。

$user->query("set names utf8");
$user->query("select * from users where user_id=1");


1、数据库也是UTF8编码

2、文件存为UTF-8,好像改了一个页面,但是还不行。

3、我不是每个查找都用Query了,有些用GET Find(),请问在连接时就设置一下。

那你应该在数据库连接成功之后设置set names utf8

$user = DB_DataObject::factory(''users'');


修改DB_DataObject类吧

一般mysql4很容易出现乱码问题,解决此类问题

1、进入mysql,运行

mysql> show variables like ''%character%'';
+ + +
| Variable_name | Value |
+ + +
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 4.1\share\charsets/ |
+ + +
7 rows in set (0.00 sec)


如果显示这样的话,那么需要运行。

set character_set_client = utf8;
set character_set_connection = utf8;
set character_set_results = utf8;


2、打开apache的配置文件httpd.conf查看是否有 AddDefaultCharact UTF8,如果没有加上就可以了,别忘了重起apche.

好了吗?

在所有查询前

set names utf8


模板文件也需要用UTF8编码方式保存.

呵呵!是啊!存的时候是什么编码,取出来也是什么编码就OK了

今天早上过来,显示正常了,晕啊。

现在数据库是UTF8 ,网页UTF-8编码,<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

可能在Apache和MySql的配置文件改了什么,还得测试。

今天国外空间访问不上,到国外空间测试后才能确定。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论