如何阻止Apps Script的UrlFetchApp生成特殊字符实体
阻止UrlFetchApp返回内容出现特殊字符转义的解决方法
首先需要明确:UrlFetchApp本身不会主动对抓取到的内容做HTML实体转义,你看到的
'这类转义字符,要么是目标网站返回的响应本身就包含转义后的实体,要么是你后续处理内容时触发了自动转义逻辑。
步骤1:确认原始响应内容
先通过指定编码获取原始响应,排除Apps Script自动转码导致的异常:
// 抓取时指定参数,避免异常拦截 const resp = UrlFetchApp.fetch("你的目标URL", { muteHttpExceptions: true }); // 显式指定UTF-8编码解析内容,避免编码识别错误 const rawContent = resp.getContentText("UTF-8"); console.log(rawContent);
如果打印的原始内容中已经存在',说明是目标网站返回的内容本身做了转义,直接走下一步解码即可。
步骤2:HTML实体解码
写一个通用的HTML实体解码函数处理返回内容,就能把'这类转义字符还原成原始的撇号等符号:
function decodeHtmlEntities(str) { // 依次处理十进制实体、十六进制实体、常见命名实体 return str.replace(/&#(\d+);/g, (_, dec) => String.fromCharCode(dec)) .replace(/&#x([0-9a-fA-F]+);/g, (_, hex) => String.fromCharCode(parseInt(hex, 16))) .replace(/'/g, "'") .replace(/"/g, '"') .replace(/</g, '<') .replace(/>/g, '>') .replace(/&/g, '&'); } // 调用示例 const normalContent = decodeHtmlEntities(rawContent);
处理后的normalContent就不会再有转义后的特殊字符了。
内容的提问来源于stack exchange,提问作者michaeldon
相关产品推荐
相关产品推荐

