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的配置文件改了什么,还得测试。
今天国外空间访问不上,到国外空间测试后才能确定。
--转自