• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php,mysql下中文编码解决方案

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

文档:

 

sample enviroment:
it's not simle to yours but I think it will work.
windows server 2003 Simple Chinese edition
apache 2.2.11
php-5.2.8-Win32
MySQL-5.1.31
=============


0.编码选择:UTF-8 还是 GB2312还是GBK。
UTF-8可以兼容ASCII编码,会根据需要占用1个或者2个字节,比较小。(其他如UTF-16和UTF-32是固定死占用2个字节或者4个字节的)
GB2312只能包括6000多常用字
GBK可以包含简体、繁体,范围广

1. PHP中的设置
php中要对php.ini文件中设置开启extension=php_mbstring.dll,按照需要修改mb_string的相关编码配置
2.MySql中的设置:
因为mySql字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。因此可以后面再设置
3.Apache中的设置:
如果是UTF-8就不用设置,如果是GBK需要设置一下httpd.conf ,开启AddDefaultCharset
4.具体操作:
第一步:建立数据库
默认是latine的encoding和collection的。因为只有一个字段是中文的,所以不用修改数据库的默认配置文件。
只要建立数据库的时候,对这个字段设置为gbk_chinese_ci即可
第二步:设置网页的charset和encoding。如果是没有设置,将根据客户端的Request来
第三步,建立连接的时候需要
SET character_set_client='gbk'
SET character_set_connection='gbk'
SET character_set_results='gbk'
(这个配置就等价于 SET NAMES 'gbk'。


================================================

0.choose an encoding
you have 3 choises:utf-8,gb2312 and GBK.
UTF-8 contains ASKII, and it uses 1 or 2 bytes so it's smaller to transform in web.
but it's contains less Chinese Characters.(Others like UTF-16 and UTF-32,is fixed to user 2 or 4 bytes)
GB2312 contains only 6000 more popular characters, such as '***' can't be contained.
GBK contains simple Chinese and Tranditional Chinese ,I think it's pro. my sample is for GBK.


1. config PHP
modify php.ini , and set the line
extension=php_mbstring.dll
on
.maybe you need to configurate the mb_string.
2.mySql configration
as mySql supports defferent charset in 4 layers, the server, the database,the table and connection.
and you have only one table ,one field in Chinese, you need not to modify the whole mysql configration

3.Apache configuration
If you are willing to use UTF-8 , you need not to configurate anything for it support utf-8 by default.
if you want to use GBK you need to modify httpd.conf and open the AddDefaultCharset

4.sample steps:
firstly, create a database
and the database's collection is latine.
when you create the table, the field, set the field's collection to gbk_chinese_ci

secondly, set the special pages you want to show the Chinese Characters.
set the charset and encoding


third, when you build a connection ,either in commandline or php , you need to run the 3 lines script:

SET character_set_client='gbk'
SET character_set_connection='gbk'
SET character_set_results='gbk'

these three lines are equle to

 SET NAMES 'gbk'

 

 

 

例子:

 

php文件

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>测试中文入数据库</title>
</head>

<body>
<ul>
 <?php
 $conn = mysql_connect("localhost","root","sa");
mysql_query("set names 'gbk'");//关键是这句
mysql_select_db("test");
$sql = "select * from chinesetest ";
$result = mysql_query($sql,$conn);


while($row = mysql_fetch_assoc($result))
{
 echo  "<li>".$row['id']."-".$row["CF"]."</li>";
}

$sql2 = "Insert Into chinesetest (CF) values('中文插入测试');";
mysql_query($sql2);
$sql2 = "Insert Into chinesetest (CF) values('請看,這裡是繁體中文')";
//echo $sql2;
mysql_query($sql2);
echo mysql_error();

mysql_close();
?> 
</ul>
</body>
</html>
 整体解决方案:

/Files/xxpyeippx/chinese_on_mysql.zip

建表语句:

CREATE TABLE IF NOT EXISTS `chinesetest` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `CF` varchar(255) CHARACTER SET gbk NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
CI框架源码学习笔记6——Config.php发布时间:2022-07-10
下一篇:
PHPManagerforIIS发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap