• 关于编码


    因为浏览器和操作系统各自不同,导致字符串的默认编码方式各有不同。表单、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

    将来的你,一定会感谢现在拼命努力的你!
  • 相关阅读:
    20172302 201720182 《程序设计与数据结构》实验二报告
    20172302 201720182 《程序设计与数据结构》实验一报告
    20172302 《程序设计与数据结构》第五周学习总结
    POJ 1061 青蛙的约会
    hdu 2485 Highways
    UVA 10608
    hdu 1213 how many tables
    java类static成员加载顺寻
    C# virtual,override或者new
    vs无法在WEB服务器上启动调试
  • 原文地址:https://www.cnblogs.com/hugjil/p/6045340.html
Copyright © 2020-2023  润新知