Open LingYanSi opened 2 years ago
const maps = [
['"', '"'],
[''', "'"],
['&', '&'],
['<', '<'],
['>', '>'],
[' ', ' '],
['¡', '¡'],
['¢', '¢'],
['£', '£'],
['¤', '¤'],
['¥', '¥'],
['¦', '¦'],
['§', '§'],
['¨', '¨'],
['©', '©'],
['ª', 'ª'],
['«', '«'],
['¬', '¬'],
['­', ''],
['®', '®'],
['¯', '¯'],
['°', '°'],
['±', '±'],
['²', '²'],
['³', '³'],
['´', '´'],
['µ', 'µ'],
['¶', '¶'],
['·', '·'],
['¸', '¸'],
['¹', '¹'],
['º', 'º'],
['»', '»'],
['¼', '¼'],
['½', '½'],
['¾', '¾'],
['¿', '¿'],
['×', '×'],
['÷', '÷'],
['À', 'À'],
['Á', 'Á'],
['Â', 'Â'],
['Ã', 'Ã'],
['Ä', 'Ä'],
['Å', 'Å'],
['Æ', 'Æ'],
['Ç', 'Ç'],
['È', 'È'],
['É', 'É'],
['Ê', 'Ê'],
['Ë', 'Ë'],
['Ì', 'Ì'],
['Í', 'Í'],
['Î', 'Î'],
['Ï', 'Ï'],
['Ð', 'Ð'],
['Ñ', 'Ñ'],
['Ò', 'Ò'],
['Ó', 'Ó'],
['Ô', 'Ô'],
['Õ', 'Õ'],
['Ö', 'Ö'],
['Ø', 'Ø'],
['Ù', 'Ù'],
['Ú', 'Ú'],
['Û', 'Û'],
['Ü', 'Ü'],
['Ý', 'Ý'],
['Þ', 'Þ'],
['ß', 'ß'],
['à', 'à'],
['á', 'á'],
['â', 'â'],
['ã', 'ã'],
['ä', 'ä'],
['å', 'å'],
['æ', 'æ'],
['ç', 'ç'],
['è', 'è'],
['é', 'é'],
['ê', 'ê'],
['ë', 'ë'],
['ì', 'ì'],
['í', 'í'],
['î', 'î'],
['ï', 'ï'],
['ð', 'ð'],
['ñ', 'ñ'],
['ò', 'ò'],
['ó', 'ó'],
['ô', 'ô'],
['õ', 'õ'],
['ö', 'ö'],
['ø', 'ø'],
['ù', 'ù'],
['ú', 'ú'],
['û', 'û'],
['ü', 'ü'],
['ý', 'ý'],
['þ', 'þ'],
['ÿ', 'ÿ'],
];
function decodeAppleNoteChar(str) {
return str
.replace(/&#x([^;]+);?/g, ($0, $1) => String.fromCodePoint(parseInt($1, 16)))
.replace(/&#(\d+);?/g, ($0, $1) => String.fromCharCode($1));
}
export function decodeHTMLChar(str) {
str = decodeAppleNoteChar(str);
maps.forEach((item) => {
str = str.replace(new RegExp(item[0] + '?', 'g'), item[1]);
});
return str;
}
背景
需要对
<span> 团队管理上<span>
进行解码团
{
js的String提供了两个静态方法用来进行解码
String.fromCharCode
解析unicode编码值,unicode编码有上线为0-65536String.fromCodePoint
解析16进制编码值,此处应选择此方法解码参考