从英文网站到中文网站的乱码解决

罪蛆
2011-11-22 看过
       此书是针对英文读者的,所以中文读者使用本书会碰到一个共同的问题-----乱码。那么乱码怎么解决呢?
       解决乱码之前,先解决mysqli兼容的问题。phpnow 中不修改是无法兼容mysqli函数的。而本书所有mysql函数皆调用mysqli。
       如果您是使用phpnow 平台,那么请您在phpnow的文件中搜索php-apache2handler.ini 文件。而如果您是其他平台不兼容mysqli,请搜索类似的".ini"文件。在相应的“.ini”文件中搜索 “extension=php_mysqli.dll”,您发现了吗:
“;extension=php_ming.dll
;extension=php_msql.dll
;extension=php_mssql.dll
extension=php_mysql.dll
;extension=php_mysqli.dll(MD 此行前边有";",也难怪无法调用。消灭此行“;”,mysqli成功调用。)
;extension=php_oci8.dll
;extension=php_openssl.dll”

下面解决乱码问题。乱码问题归根到底是php以及mysql数据库中文编码不支持的问题。(以下解决方案有网上的引用,是本人应用成功后总结)
  解决方案:统一编码为 UTF-8。
1.网页在head标签后,title标签前加入一行:
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> 顺序不能错,一定要在显示的标题有可能是乱码!

2.html文件编码问题:

点击编辑器的菜单:“文件”->“另存为”,可以看到当前文件的编码,确保文件编码为:UTF-8,
如果是ANSI,需要将编码改成:UTF-8。 顺序不能错,一定要在显示的标题有可能是乱码!

3.数据库创建统一编码
    用phpmyadmin创建数据库和数据表
创建数据库的时候,请将“整理”设置为:“utf8_general_ci”
或执行语句:

CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
创建数据表的时候:如果是该字段是存放中文的话,则需要将“整理”设置为:“utf8_general_ci”,

相应的SQL语句,例如:

CREATE TABLE `test` (
`id` INT NOT NULL ,
`name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ; //注意 varchar的“utf8_general_ci”设置。


 [网上说这样也管:
CREATE TABLE 表名
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
text_test TEXT,date_test DATE NOT NULL
)DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
]

4Mysql 连接操作:
$dbc= mysqli_connect('localhost','用户名','密码','数据库名');
mysqli_set_charset($dbc,'utf8'); //设置字符集,这样可以让用户使用中文字符

       经本人测试,xampp的乱码无法解决一般出在mysqli_set_charset($dbc,'utf8')没有设置。

       按照步骤四,成功解决,乱码消失。
14 有用
0 没用

查看更多豆瓣高分好书

评论 3条

添加回应

Head First PHP & MySQL(中文版)的更多书评

推荐Head First PHP & MySQL(中文版)的豆列

了解更多图书信息

豆瓣
免费下载 iOS / Android 版客户端