zoukankan      html  css  js  c++  java
  • 关于编码

    因为浏览器和操作系统各自不同,导致字符串的默认编码方式各有不同。表单、URL、ajax中含汉语或者其他语言时出现乱码的原因就是不同的编码导致。

    解决该问题的最简单的方法是用JavaScript先对URL进行编码在提交到服务器,这样浏览器不会对此再次编码。

    下面将介绍JavaScript和asp.net的编码和解码。

    JavaScript:

        Window.escape(str);        字符串编码成Unicode编码。

        Window.unescape(str);    Unicode编码解码成字符。

            规则是:除了ASCII字母、数字、标点符号"@*_+-./"意外的字符进行编码。因为它不对"+"进行编码,所以不建议用该编码方式。

        格式:

        Window.encodeURI(str);    字符串编码成utf-8编码。

        Window.decodeURI(str);    utf-8编码解码成字符。

            规则是:除了ASCII字母、数字、标点符号";/?:@&=+$,#"意外的字符进行编码。

        格式:

        Window.encodeURIComponent(str);    字符串编码成utf-8编码。

        Window.decodeURIComponent(str);    utf-8编码解码成字符串。

            规则是:跟encodeURI一样,但它会对";/?:@&=+$,#"等符号进行编码。

        格式:

    ASP.NET:

        HttpUtility.UrlEncode(str);        字符串编码成utf-8编码。

    HttpUtility.UrlDecode(str);        utf-8编码解码成字符串。

            规则是:js的encodeURIComponent(str)/decodeURIComponent(str)编码/解码函数规则一样,并会把空格编码成"+"符号。

    编码种类:

        ASCII:从00000000到01111111的八个二进制,共有128种不同状态,被称为字节(byte),最前面一位规定0。

        GB2312:简体中文常见的编码方式,两个字节表示一个汉字,最多可以表示65536个符号。

        Unicode:他有UCS-2和UCS-4规范。UCS-2是用两个字节表示,共有65536个状态。UCS-4是用4个字节表示,共有4,294,967,296个状态。目前普遍采用的市UCS-2。

        Utf-8:是Unicode的一种实现方式,还包括utf-16和utf-32。特点:他是一种变长的编码方式。

            Utf-8规则:

            单字节第一位规定0,后面7位是Unicode码,随意utf-8和ASCII码是相同的。

            一个字符有n字节,则在第一个字节前n位设为1,n+1设为0,其后字节的前两位设为'10'。假设一个字符有4个字节,则这四个字节的"壳"是1111 0xxx,10xx xxxx,10xx xxxx,10xx xxxx。再把该字符转换成二进制,补到x位置,从后往前补。所以utf-8一个字符最大可占7个byte(字节)。最后这四个字节转换成十六进制(8个字符)。

            decodeURIComponent(str)就是每个字节前加了"%"符号的16进制。

        

    Unicode:文件开头FF FE 表明little endian格式编码,字符从后往前编码,FF FE 4E 25 实际上是25 4E。

    Unicode big endian:文件开头FE FF,从前往后编码。

    Utf-8:文件开头EF BB BF,从前往后编码。

    注:文件开头说明该文件的编码类型!

     

    如果有错别地方请大师指出来哦, O(∩_∩)O谢谢!

     

    本文章参考:

        http://blog.csdn.net/lvxiangan/article/details/8151670

        http://baike.baidu.com/link?url=DXrQvbWVi8hU2KURCs8tK_iCCiXyIuU5Dwue0btWIHJHCdO0XsYiExmb9T5hgwqA9k0_DkBDS_-fuS7hElkQb_

        http://www.blogjava.net/Hopes/articles/385744.html

    将来的你,一定会感谢现在拼命努力的你!
  • 相关阅读:
    Python基础之迭代器、生成器
    Python基础之模块+异常
    Python基础之面向对象思维解决游戏《天龙八部》
    Oracle创建存储过程
    数据库范式
    Oracle条件判断
    Oracle的三种循环
    Oracle的pl/sql变量类型
    oracle如何实现去重和分页
    相关子查询和非相关子查询
  • 原文地址:https://www.cnblogs.com/hugjil/p/6045340.html
Copyright © 2011-2022 走看看