zoukankan      html  css  js  c++  java
  • 编码问题简单收集

    每一个二进制位(bit)有0和1两种状态,八个二进制位被称为一个字节(byte);因此一个字节可以组合出256个状态,即对应256个字符;
    ASCII:
    ASCII码一共规定了128个字符的编码;只占用了一个字节的后面7位,最前面的1位统一规定为0;
    GB2312:
    GB2312对ASCII简体字扩展;两个字节表示一个汉字,可以表示256x256=65536个符号。后更新出gbk,gb18030,即gb系列;
    big5:
    big5对ASCII繁体字扩展;
    Unicode:
    Unicode是一个很大的集合,现在的规模可以容纳100多万个符号,达到4个字节;太过庞大这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍。
    UTF-8:
    UTF-8是Unicode的实现方式之一;UTF-8它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
    ANSI:
    ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码


    URL编码:
    URL编码结果依赖你使用的”方法“,最终将URL转换为有效的ASCII字符格式。每一个非安全的ASCII字符都被替换为“%hh”格式,其中hh为两位十六进制数,它对应于该字符在ISO-8859-1字符集里的编码值。URL字符串里不能含有空格,在进行URL编码时,空格全部被替换为加号(+)。
    所以相同汉字有N多种URL编码结果,URL的utf8编码为3个字节对应一个汉字,gbk编码为两个字节对应一个汉字。
    1、网址路径的编码,用的是utf-8编码;
    2、参数的编码,用的是操作系统的默认编码(一般为utf-8)。
    3、GET和POST方法的编码,用的是网页的编码。
    4、在Ajax调用中,IE总是采用GB2312编码(操作系统的默认编码),而Firefox总是采用utf-8编码。

    在javascript里的URL编码函数
    escape&unescape:
    javascript的Unicode编码&解码

    var unicode =  function(s){
        return s.replace(/[\u4E00-\u9FA5]/ig,function(w){
                return escape(w).toLowerCase().replace(/%/ig,'\\');
        });
    };
    

    encodeURI&decodeURI
    javascript的utf-8编码
    encodeURIComponent&decodeURIComponent
    javascript的utf-8编码,包括encodeURI编码字符;

    浏览器识别编码顺序是
    1,http头中的Content-Type
    2,html页面中的meta标签中指定charset
    3,页面正文数据(浏览器可以解析正文二进制码来判断编码)

    避免编码问题可以采取的方法
    1、使用js的encodeURI方法将汉字进行UTF-8的URL编码;服务器端再将其转码;
    php处理:
    iconv("UTF-8", "gbk", htmlspecialchars($__GET["name"], ENT_QUOTES));
    2、使用js的escape方法将汉字进行unicode编码;服务器端处理转码
    php:json_decode ( string $json [, bool $assoc ] );对 JSON 格式的字符串进行编码,返回json对象;可以针对unicode进行解码;



    详细参考:
    http://ued.taobao.com/blog/2011/08/26/encode-war/
    http://www.ruanyifeng.com/blog/2010/02/url_encoding.html
    http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

  • 相关阅读:
    mongodb
    python中读取文件的read、readline、readlines方法区别
    uva 129 Krypton Factor
    hdu 4734
    hdu 5182 PM2.5
    hdu 5179 beautiful number
    hdu 5178 pairs
    hdu 5176 The Experience of Love
    hdu 5175 Misaki's Kiss again
    hdu 5174 Ferries Wheel
  • 原文地址:https://www.cnblogs.com/cheche/p/2158398.html
Copyright © 2011-2022 走看看