zoukankan      html  css  js  c++  java
  • 003_&#x和ASCII的关系及URL中的中文转义

    一、&#x和ASCII的关系

    以下是常用的,在博客园的插入代码块&#+数字后浏览器也会自动把这些字符数字控制符给显示出来;

      -> 空格 (ASCII码_可显示字符: 32十进制)
    ( -> (   (ASCII码_可显示字符: 40十进制)
    ) -> )   (ASCII码_可显示字符: 41十进制)
    - -> -   (ASCII码_可显示字符: 45十进制)
    : -> :   (ASCII码_可显示字符: 58十进制)
    . -> .   (ASCII码_可显示字符: 46十进制)
    
    
    
 -> 换行符 (ASCII码_控制字符: 10十进制)
    

    Reference: http://ascii.911cha.com/

    将这一堆“乱码”保存成网页后,通过浏览器打开又可以正常显示。它的学名叫实体编码 entity code. 

    在 HTML 中,某些字符是预留的,例如小于号「<」、大于号「>」等,浏览器会将它们视作标签。如果想要在HTML中显示这些预留字符,我们就要用到字符实体(character entities)。我们比较熟悉的字符实体有空格「&nbsp;」,小于号「&lt;」,大于号「&gt;」等。这样的格式比较语义化,容易记忆,但其实字符实体有其他的格式:

    &name;
    &#dddd;
    &#xhhhh;

    1. 这三种转义方式都称作 character reference,第一种是 character entity reference,「&」符号后接预先定义好的 entity 名称。

    2. 后两种是 numeric character reference,数字取值为目标字符的 Unicode code point;以「&#」开头的后接十进制数字,「&#x」开头的后接十六进制数字。

    从 HTML4 开始,numeric character reference 以 Unicode 为准,与文档编码无关。「你好」二字分别是 Unicode 字符 U+4F60 和 U+597D,十六进制表示的 code point 数值「4F60」和「597D」,同时也就是十进制的「20320」和「22909」。所以

    在HTML中输入

     &#x4F60;&#x597D;
    &#20320;&#22909;

    都会显示为“你好”。

    Reference: https://www.cnblogs.com/philipding/p/10153094.html 

    二、URL中的中文转义

    (1)编写一个测试的网页地址:

    路径如为: TEST/你好/index.html,浏览器显示为:

    (2)查看该网页的请求头:

    Request URL:
    http://127.0.0.1:5500/TEST/%E4%BD%A0%E5%A5%BD/index.html
    ①浏览器对中文路径URL的转义,如上,虽然在 href 中是直接写的中文,但浏览器悄悄地做了转义。当然你也可以自己先行转义好放在 href 那,这样浏览器就不会再转了。
    ②为什么URL中中文需要转义: 这个原因简单讲就是 URL 中的规范就是这么规定的。
    更准确地说是 URI 规范。URL 是 URI 的一种,常见的 URI 通常也都是 URL,一般情况下会混着用两者。关于 URI 规范,具体可见 http://www.ietf.org/rfc/rfc2396.txt 和 http://www.ietf.org/rfc/rfc3986.txt。(后面的为更新的规范)
    

    ③URL中的转义表示:

    像这样的一串字符"%E4%BD%A0%E5%A5%BD", 其中的每一个部分用【%XX】来表示,其中 XX 表示一个十六进制的数(hexadecimal digits),这样的表示就是所谓的“URL 的转义表示”,也叫“百分号编码”(Percent-Encoding)。如果把其中的百分号 % 去掉,会发现结果是"E4 BD A0 E5 A5 BD",总共 6 个字节,其实就是“主页”两字的 utf-8 编码。

    如果你还记得先前说到的 utf-8 的编码模式(参见大神博客: https://xiaogd.net/%e5%ad%97%e7%ac%a6%e9%9b%86%e4%b8%8e%e7%bc%96%e7%a0%81%ef%bc%88%e5%9b%9b%ef%bc%89-unicode/ ),EX XX XX 通常就是常用汉字的模式。
    

    那么现在比较清楚了,URL 路径中的中文需要转义,具体编码用的是 utf-8。包括本文粘贴的地址也是一样.

    三、第二中所描述即为"百分比编码"或"URL编码"

    百分比编码 是一种拥有8位字符编码的编码机制,这些编码在URL的上下文中具有特定的含义。它有时被称为URL编码。编码由英文字母替换组成:“%” 后跟替换字符的ASCII的十六进制表示

    需要编码的特殊字符有: ':''/''?''#''['']''@''!''$''&'"'"'('')''*''+'','';''=',以及,'%' 本身. 其他的字符虽然可以进行编码但是不需要。

    根据上下文, 空白符 ' ' 将会转换为 '+' (必须在HTTP的POST方法中使定义 application/x-www-form-urlencoded  传输方式), 或者将会转换为 '%20' 的 URL。

  • 相关阅读:
    Atitit.Java exe bat  作为windows系统服务程序运行
    Atitit. Object-c语言 的新的特性  attilax总结
    Atitit. Object-c语言 的新的特性  attilax总结
    Atitit。Time base gc 垃圾 资源 收集的原理与设计
    Atitit。Time base gc 垃圾 资源 收集的原理与设计
    Atitit.go语言golang语言的新的特性  attilax总结
    Atitit.go语言golang语言的新的特性  attilax总结
    Atitit.pdf 预览 转换html attilax总结
    Atitit.pdf 预览 转换html attilax总结
    Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结
  • 原文地址:https://www.cnblogs.com/arun-python/p/13068952.html
Copyright © 2011-2022 走看看