Web前端:&#x(unicode编码后的汉字)JS转换方法
使用JS请求网页的时候,发现得到的HTML中文部分都一些奇怪的东西
运行环境 Runtime environment
1 | 操作系统 : Windows10 |
背景
使用JS请求网页的时候,发现得到的HTML中文部分都一些奇怪的东西。
里面的汉字的部分都是:
1 | 怀怀 |
之类的东西,又不想在后端层极处理这些编码问题占用后端处理时间。
于是,寻找在前端处理此类编码的解决办法
说明
在使用readability的api提取网页内容的时候点这里看-readability-网页内容提取利器,
中文内容都是&#x开头的一堆乱码似的东西。但保存成网页文件后,浏览器是可以正常显示的~
1 | 怀怀 |
一串字符是 HTML、XML 等 SGML 类语言的转义序列(escape sequence)。
它们不是「编码」。
以 HTML 为例,这三种转义序列都称作 character reference:第一种是 character entity reference,
后接预先定义的 entity 名称,而 entity 声明了自身指代的字符。
后两种是 numeric character reference(NCR),
数字取值为目标字符的 Unicode code point;以「&#」开头的后接十进制数字,
以「&#x」开头的后接十六进制数字。
&#x转汉字
1 | unescape("怀怀".replace(/&#x/g,'%u').replace(/;/g,'')) |
汉字转&#x
1 | "怀怀".replace(/[^\u0000-\u00FF]/g,function(a){return escape(a).replace(/(%u)(\w{4})/gi,"&#x$2;")}) |
总结
尽量在前端处理此类比较问题,解决后端算力
善用unescape和escape等JS方法
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 快乐咸鱼のRaXianch窝!
评论
WalineValine