看到一篇有趣的文章
,关于表单提交确实没有尝试过这种设置,一般设置html的meta以及页面为gbk或utf-8编码,那么表单中的中文会以gbk或utf-8编码后在网络上以ascii传播,或者手工构造url用encodeURIComponent
utf-8提交。
而在上面文章中,设置页面编码为 text/html; charset=ISO-8859-1,如这里的 google
(默认下google
为utf-8编码),填写中文(某些浏览器?待测)提交后实际上因为中文没有在 iso-8859-1 的对应编码导致浏览器将中文字符的html entity
编码提交到服务器去了(服务器是否会自动转换?待测)。
大家熟悉的 < > ,空白等对应有实体名 < ,> ,实际上所有字符都对应有实体,只不过大多数字符只有 entity number,而没有entity name ,entity number 的规则为
&# (加上) 字符的unicode编码十进制 (加上) ;
如上例的google,firefox提交"我"结果为:q=%26%2325105%3B ,%26为&,%23为#,25105为“我”的unicode码点值,%3b为;
updated 2010-11-24
根据介绍 xml 特殊字符输入的提示:
http://www.regular-expressions.info/unicode.html
XML Schema
does not have a regex token for matching Unicode code points. However, you can easily use XML entities like

to insert literal code points into your regular expression.
实体数字也可以指定16进制,那么这时格式为
&# (加上) x
(加上)
字符的unicode编码16进制 (加上) ;
例如: = 表示 = ,而 a 表示 a
如不涉及变量逻辑,实际上以往的js向html写入特殊字符 "\uxxxx",可以替换为 "&#yyyyy",区别是 xxxx必须为16进制且为4位(必要时0填充),而yyyyy是不限位数的十进制数。
PS: javascript获得字符编码
javascript 中除了 encodeURI系列,以及被废弃的escape(强烈不建议用,也不知道能用在什么地方),String.prototype.charCodeAt可以很方便的获得字符串中某个位置字符的unicode十进制编码 ,结合String.fromCharCode 可以等价与 java 中的 getBytes 和 new String 的 unicode 应用。十六进制与10进制之间的转换可以用Number.prototype.toString(radix)进行处理。
PS2: textarea 中 html 内容编码问题
另一点要注意的是:由于 textarea 以及写它在页面中指定的值可以编码也可以不编码,一般情况下效果差别不大:
<textarea> <b>b</b></textarea>
<textarea> <b>b</b></textarea>
其实保险情况下,应该编码,否则可能会导致意外终结 textarea 。
<textarea> xx</textarea></textarea>
但是当用户输入或程序设置 <b> 为 textarea 内容时就有显著差别了:
提交到数据库中,存的是 <b>
但是如果原封不动输出到页面中时:
<textarea>
<b>
</textarea>
实际上 textarea 里面的内容会被首先 decodeHtml 后作为 textarea 的值,显示在输入文本框中则是:
<b>
而不是用户先前输入的
<b>
这时可以知道实体编码对于 textarea 在页面中的回填值(脚本设置则不需要)是十分必要的,对于 velocity 模板可采用 $encode.html
(或者配置
):
<textarea>
$encode.html($content)
</textarea>
同理 input !
PS3 不间断空格问题
&nsbp; 属于 html 特有的命名实体,相当于   (不间断空格)。无论多少个 并排放置都不会导致浏览器换行!
需要注意的是 ie 正则表达式下 \s 对于不间断字符存在 bug:
/^\s$/.test(String.fromCharCode(160))
// ie => false
// firefox/chrome => true
保险点需要写成:
/^[\s\xa0]$/.test(String.fromCharCode(160))
further reading :
html 实体字符值问题
html codes
分享到:
相关推荐
HTML实体字符集 最全的HTML实体字符集,实体字符和实体编码 如: 最常用的字符实体 显示结果 描述 实体名称 实体编号 空格   小于号 < < > 大于号 > > & 和号 & & " 引号 "...
php中将字符串转为HTML的实体引用的一个类,将非ASCII字符串转换成HTML实体,要进行编码的字符串,返回HTML实体引用。
一种适用于实体与非实体的快速区域编码算法
html-entities 最快HTML实体库。 附带TypeScript和Flow类型。安装$ npm install html-entities用法编码(文本,选项) 编码文本,以替换HTML特殊字符( <>&"' )以及其他字符范围,具体取决于mode选项的值。 ...
在原来的基础上加了选择文件和文件夹的转换功能,这是基于framework 3.5的winform程序,使用前请确定自己的电脑是否安装了framework 3.5
js-htmlencode是一款可以实现HTML编码和解码的JavaScript工具类。通过该JS工具类,你可以将HTML标签转换为对应的HTML实体,也能将HTML实体转换回HTML标签,非常实用。
用于Rust示例HTML实体编码库。 并使用htmlescape :: {相关功能在这里}; 是用于RustHTML实体编码库示例用法所有示例均假设使用外部包装箱htmlescape; 并使用htmlescape :: {相关功能在这里}; 存在。 ### Encoding ...
本文实例讲述了JS Html转义和反转义(html编码和解码)的实现与使用方法。分享给大家供大家参考,具体如下: 1、JS实现html转义和反转义主要有两种方式: 1)、利用用浏览器内部转换器实现html转义; 2)、用正则...
js-htmlencode是一款可以实现HTML编码和解码的JavaScript工具类。通过该JS工具类,你可以将HTML标签转换为对应的HTML实体,也能将HTML实体转换回HTML标签,非常实用。
HTML 实体 从选定文本或当前文档编码和解码 HTML 实体。 如果您愿意,可以将此代码添加到keymap.cson以添加快捷方式。 '.editor': 'f5': 'html-entities:encode' 'f6': 'html-entities:decode'F5和F6是可选的。
这些命令大多数都在两个方向上起作用(例如,您可以编码为html实体,或从html实体编码)。 HTML实体 CSS(例如Unicode字符) Xml实体 Json琴弦 乌尔斯 Base64编码 哈希:Md5,Sha256,Sha512 正则表达式转义 SQL...
用的浏览器内部转换器实现转换,方法是动态创建一个容器标签元素,如DIV,将要转换的字符串设置为这个元素的innerText,然后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串。 function HTMLEncode ( ...
HTML特殊字符编码对照表 HTML特殊字符编码对照表 HTML特殊字符编码对照表
HTMLString是用Swift编写的库,它允许您的程序在String中添加和删除HTML实体。 主要特点 :locked_with_pen: 添加ASCII和UTF-8 / UTF-16编码的实体 :memo: 删除超过2100个命名实体(如& ) :input_numbers: 支持...
使用将重音符号和其他变音符号编码为HTML实体。 < p> Olá, tudo bem com você? 编码为 < p> Olá, tudo bem com você? 用法 像任何其他gulp插件一样。 const gulp = require ( 'gulp' ) ; const ...
字符串化实体 编码HTML字符引用。 非常快 只是编码部分 拥有您所需的所有选项,用于缩小/修饰符,或具有w / stringifyEntitiesLight的小尺寸 可靠: '`'字符被转义以确保Internet Explorer 6至8中不会运行任何脚本。...
HTML实体 Elixir模块,用于对字符串中HTML实体进行解码和编码。 实体名称,代码点及其对应的字符是从复制的。安装将依赖项添加到mix.exs文件,然后运行mix deps.get 。 defp deps do [ { :html_entities , " ~> 0.5 ...
/** * 将非ASCII字符串转换成HTML实体 * * @example HtmlEncode::encode(“我信了”); //输出:我信了 * @param string $s 要进行编码的字符串 * @return string 返回HTML实体引用 */ public static
HTML实体概要用于Swift的纯Swift HTML编码/解码实用工具。 包括对HTML5命名字符引用的支持。 您可以在找到所有2231个HTML5命名字符引用的列表。 HTMLEntities可以转义所有非ASCII字符以及< , > , & , " , '...