You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript/Node.js中如何将£替换为£解决英镑符号乱码问题

Node.js request库英镑符号乱码问题解决方案

核心问题根因

你看到的£乱码是典型的编码解析不匹配问题:
英镑符号£的UTF-8编码为双字节0xC2 0xA3,如果request库默认按单字节编码ISO-8859-1(Latin-1)解析响应,会把两个字节分别映射为Â和£两个字符,最终呈现为乱码。
你之前用iconv解码不生效,大概率是没有关闭request的默认字符串转码,拿到的已经是转码错误的字符串,再做解码操作也无法恢复原始内容。

优先修复方案(比替换兜底更稳定)

先关闭request的自动编码转换,拿到原始响应Buffer后再按页面实际编码解码,示例代码如下:

const request = require('request');
const iconv = require('iconv-lite');

request({
  url: '目标页面地址',
  encoding: null // 关键配置:不自动转字符串,返回原始Buffer
}, (error, response, body) => {
  // 按页面实际编码解码,若页面是GBK等其他编码替换对应参数即可
  const html = iconv.decode(body, 'utf8');
  // 此时html内的£符号已正常解析,无乱码
})

兜底替换方案的问题修正

你现在替换后输出£字面量,以及替换不生效的问题,是两个错误导致的:

  1. 正则仅匹配£,但实际乱码是£两个字符,匹配规则不命中
  2. 替换值写了£,其中&是&的HTML实体,最终渲染会直接展示£字符串而非£符号

正确写法按场景选择即可:

  • 若需要HTML页面渲染显示£符号,替换为HTML实体£:
string.replace(/£/g, '£')
  • 若需要直接得到£的纯文本字符,直接替换为£字面量:
string.replace(/£/g, '£')

内容的提问来源于stack exchange,提问作者Strontium_99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 10:24:03