Web前端:&#x(unicode编码后的汉字)JS转换方法

使用JS请求网页的时候,发现得到的HTML中文部分都一些奇怪的东西

运行环境 Runtime environment

1
2
3
操作系统 : Windows10
IDE: JetBrains WebStorm 2020.2.4 x64
浏览器: Google Chrome 版本 67.0.3396.99(正式版本) (64 位)&& FireFox Developer Edition 版本63.0b4 (64位)

背景

使用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方法

×

也就放着玩的

扫码支持
扫码打赏,其实感觉也没人会给的。。

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 运行环境 Runtime environment
  • 背景
  • 说明
  • &#x转汉字
  • 汉字转&#x
  • 总结
  • ,