Loading... ### 什么是转义 在编程中一些具有特殊意义的字符,例如`\n`表示换行,`\t`表示前进一个tab,等等。 而转义在HTML中亦是如此,在HTML中如果我们想在网页上显示一个<,我们需要输入`<`,>则要输入`>`,这都是转义的结果。 ### 什么是反转义 在一些场合我们需要把转义字符成所表示的形式,例如把`<`转换成<,这就是反转义。 ### 为什么HTML标签需要转义 在一些特定的场合,我们需要对标签进行转义,例如: 1. 在网页中显示html代码而不被浏览器解析 > 需要在网页中展示html代码 2. 防止js注入 > 在一些输入框中,防止用户因输入执行木马脚本而导致一系列严重后果,因为我们并不知道用户到底会输入什么。 ### 为什么HTML标签需要反转义 1. 后台设置网页页脚,而页脚内容保存在数据库中,需要动态读出。 > 当文本框里面的html被存入数据库时,html标签会被转义成文本,里面仅含有字符。当需要使用时,因将文本中的转义字符反转义成html标签给浏览器解析。 2. js从后台获取的url会被转义 从数据库读出html语句时标签全部被转义  浏览器显示而不被解析  ### 转义实现方法 为了能在浏览器中显示html代码而不被解析,我们需要把html标签进行转义,由于只是前端操作,这里使用js并使用正则表达式进行转义 ```javascript function HtmlToEscape(html) { var map = { '<':'<', '>':'>', '&':'&', '"':'"', ' ': ' ', //此处还可继续添加需要转义的字符 } return html.replace(/[<>&"\s]/g, function(char) {return map[char];}); } ``` ### 反转义实现方法 反转义只需反向操作即可,也就是方法里面的map反过来写,正则改一下就行 ```javascript function EscapeToHtml(html) { var map = { 'lt':'<', 'gt':'>', 'nbsp':' ', 'amp':'&', 'quot':'"', //此处还可继续添加需要反转义的字符 } return html.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(char) {return map[char];}); } ``` ### 附:HTML转义字符 #### HTML常用转义字符 | 字符 | 十进制 | 转义字符| | ---- | ----- | -------| | " | `"` | `"`| | & | `&` | `&`| | < | `<`| `<`| | > | `>`| `>`| | 不断开空格(non-breaking space)| ` `| ` `| #### HTML特殊转义字符对照表 | 字符 | 十进制 | 转义字符 | 字符 | 十进制 | 转义 | 字符 | 十进制 | 转义字符 | | ---- | ----- | ------- | ---- | ----- | -----| ---- | ----- | ------- | | ¡ | `¡` | `¡` | Á | `Á` | `Á`| á | `á` | `á`| | ¢ | `¢` | `¢` | Â | `Â` | `ˆ` | â | `â` | `â`| | £ | `£` | `£` | Ã | `Ã` | `Ã` | ã | `ã` | `ã`| | ¤ | `¤` | `¤` | Ä | `Ä` | `Ä` | ä | `ä` | `ä`| | ¥ | `¥` | `¥` | Å | `Å` | `˚` | å | `å` | `å`| | ¦| `¦` | `¦` | Æ | `Æ` | `Æ` | æ | `æ` | `æ`| | § | `§` | `§`| Ç | `Ç` | `Ç` | ç | `ç` | `ç`| | ¨ | `¨` | `¨` | È | `È` | `È` | è | `è` | `è`| | © | `©` | `©` | É | `É` | `É `| é | `é` | `é`| | a | `ª` | `ª` | Ê | `Ê` | `Ê` | ê | `ê` | `ê`| | « | `«` | `«` | Ë | `Ë` | `Ë` | ë | `ë` | `ë`| | ¬ | `¬` | `¬`| Ì | `Ì` | `Ì` | ì | `ì` | `ì`| | /x7f | `­` | `­` | Í | `Í` | `Í` | í | `í` | `í`| | ® | `®` | `®`| Î | `Î` | `Î` | î | `î` | `î`| | ˉ | `¯` | `¯`| Ï | `Ï` | `Ï` | ï | `ï` | `ï`| | ° | `°` | `°` | Ð | `Ð` | `Ð` | ð | `ð` | `&ieth;`| | ± | `±` | `±` | Ñ | `Ñ` | `Ñ` | ñ | `ñ` | `ñ`| | 2 | `²` | `²` | Ò | `Ò` | `Ò` | ò | `ò` | `ò`| | 3 | `³` | `³` | Ó | `Ó` | `Ó` | ó | `ó` | `ó`| | ′ | `´` | `´` | Ô | `Ô` | `Ô` | ô | `ô` | `ô`| | μ | `µ` | `µ` | Õ | `Õ` | `Õ` | õ | `õ` | `õ`| | ¶ | `¶` | `¶` | Ö | `Ö` | `Ö` | ö | `ö` | `ö`| | · | `·` | `·` | × | `×` | `×` | ÷ | `÷` |`÷`| | ¸ | `¸` | `¸` | Ø | `Ø` | `Ø `| ø | `ø` | `ø`| | 1 | `¹` | `¹` | Ù | `Ù` | `Ù `| ù | `ù` | `ù`| | o | `º` | `º` | Ú | `Ú` | `Ú` | ú | `ú` | `ú`| | » | `»` | `»` | Û | `Û` | `Û` | û | `û` | `û`| | ¼ | `¼` | `¼` | Ü | `Ü` | `Ü` | ü | `ü` | `ü`| | ½ | `½` | `½ `| Ý | `Ý` | `Ý` | ý | `ý` | `ý`| | ¾ | `¾` | `¾` | Þ | `Þ` | `Þ` | þ | `þ` | `þ`| | ¿ | `¿` | `¿` | ß | `ß` | `ß` | ÿ | `ÿ` | `ÿ`| | À | `À` | `À` | à | `à` | `à`| | | | ### 数据来源 1. 表格来源:[OSCHINA.NET在线工具](https://tool.oschina.net/commons?type=2) Last modification:January 13, 2025 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的文章对你有用,请随意赞赏