- 背景:
- JQ的html()函數得到網頁的html源碼,而有時得到的文本中的中文會以HTML轉義碼的形式出現:如“轉發”被編碼成了“& #x8F6C;& #x53D1;”。(這裏&和#之間加了空格,否則會直接顯示爲中文)
- 而使用text()函數又會丟失網頁的元素信息,所以想原生的保留網頁信息只能進行手工解碼。
- 原理:
- 這種編碼方式使用的編碼爲unicode,在&#和;之間的十六進制數即爲該字符的unicode編碼。
- 造輪子:
- String.fromCharCode()方法,該方法接受一個unicode值,返回該值代表的字符。
- JS字符串正則替換支持str.replace(reg, function(text){})的形式。
function decodeHtml(_str){
var s = _str.replace(/&#x[\dA-F]{2,4};/g, function(_hex){
return String.fromCharCode('0' + _hex.slice(2, -1));
});
return s;
}
原理都清楚了輪子也很簡單
nodejs測試通過