zoukankan      html  css  js  c++  java
  • 网站全面采用UTF-8方法

    先是概念的理解:

    Unicode/UCS的压缩形式--UTF8出现了,套用官方网站的首句话『UTF-8 stands for Unicode Transformation Format-8. It is an octet (8-bit) lossless encoding of Unicode characters.』,由于UTF也适用于编码UCS,故亦可称为『UCS transformation formats (UTF)』
    UTF8是以8bits即1Bytes为编码的最基本单位,当然也可以有基于16bits和32bits的形式,分别称为UTF16和UTF32,但目前用得不多,而UTF8则被广泛应用在文件储存和网络传输中。

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。
    至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。
    GBK包含全部中文字符,
    UTF-8则包含全世界所有国家需要用到的字符。
    GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准
    UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。
    比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。
    对于英文比较多的论坛,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。
    UTF-8版本虽然具有良好的国际兼容性,但需要比GBK/BIG5版本多占用50%的数据库存储空间,因此并非推荐使用,仅供对国际兼容性有特殊要求的用户使用。

    1. 用 vi /etc/httpd/conf/httpd.conf 設定Apache中的编码为:( (记得restart)

     AddDefaultCharset UTF-8;

    2. 用 vi /etc/php.ini 设置php中的编码为:( (记得restart)

     default_charset = "utf-8";

    3. 用 vi /etc/my.cnf 设置MySQL中的编码为:( (记得restart)

    [mysqld]
    
        init_connect='SET NAMES utf8';
    
        default-character-set=utf8;
    
    [client]
    
        default-character-set = utf8;

    4. 建立函数库时选择编码为: (记得清除DB Cache)

    DROP DATABASE IF EXISTS `aa`;
    
          CREATE DATABASE `aa` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    
          USE `aa`;
    
          CREATE TABLE  IF NOT EXISTS `aat` (      `id` char(1) NOT NULL default '1',
    
           `myStr` varchar(200) default NULL,
    
          PRIMARY KEY  (`id`)
    
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

    5. 用UltraEdit(v11.20a版) 转换所有ANSI格式的php文档转换为UTF-8格式:

    File --> Conversions --> ASCII to UTF-8 (Unicoding Editing)
      ( 在UltraEdit中按Advanced --> configuration --> File Handling
      --> Unicode/UTF-8 Detection --> 剔选Auto detect utf-8 files )

        如有需要时,可执行Remove BOM.php. 应该用Windows系统的Notepad将php文档由ANSI转为UTF-8时,

      因为文档头有BOM,会引起排版问题或者php程序无错误提示,页面显示空白,需要移除,执行Remove BOM.php即可自动移除.

      Remove BOM.php可由以下网址下载:

    http://www.hoyo.idv.tw/hoyoweb/document/view.php?sid=13&author=hoyo&status=view

    6. 在php文档中必須加入:

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

    7. 在连接DB的文档中必須加入3行mysql_query才ok:

    // 要在真正query DB取出资料前,加入以下3行
    
     mysql_query("SET NAMES 'utf8'"); 
    
     mysql_query("SET CHARACTER_SET_CLIENT=utf8"); 
    
     mysql_query("SET CHARACTER_SET_RESULTS=utf8"); 
    
     $sql  = "select * from aat where crid='1'";
     $rows = mysql_query($sql);

    8. 在php文档中, 如有需要注意: [Optional]

          运用htmlentities和htmlspecialchars时,如下:

             $chars = htmlentities($chars,ENT_QUOTES,"UTF-8");
    
             $chars = htmlspecialchars($chars,ENT_QUOTES,"UTF-8");

          并且在显示前要用

             $chars = html_entity_decode($chars,ENT_QUOTES,"UTF8");

          如有用过addslashes()或mysql_real_escape_string()记得用以下:

             $chars = stripslashes($chars);

          如有需要可以用以下函数转换编码:           

             $chars = iconv('Big5','UTF-8',$chars); //由Big5转换UTF-8

    <摘自:http://www.cnblogs.com/cy163/archive/2007/05/31/766886.html & http://blog.sina.com.cn/s/blog_6dd65c6f01019b37.html & http://www.verydemo.com/demo_c116_i116823.html>

    没有人告诉你,生活会是这样:你工作无趣,你袋里没钱,你的爱情总是昙花一现;妈妈警告过你,会有这样的日子但她没有告诉你,世界将让你屈服。但是,别怕,有我在你身边,谁让我们是friends呢……
  • 相关阅读:
    [zt]在XML序列化时去除默认命名空间xmlns:xsd和xmlns:xsi
    线程间操作无效: 从不是创建控件“...”的线程访问它。
    Unity IoC + WCF + wsHTTPBinding + Certificate Authorization
    [转]PowerDesigner使用教程 —— 概念数据模型
    C# Post数据和接收简单示例【摘】
    163相册验证码图片的识别手记之一 去除干扰
    实现WCF和Unity 的集成
    Html.ActionLink 几种重载方式说明及例子
    如何从程序员到项目经理【转帖51cto】
    OSG闪存
  • 原文地址:https://www.cnblogs.com/ChandlerVer5/p/mysql_utf8.html
Copyright © 2011-2022 走看看