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

如何使用JavaScript检测字符串中的无效UTF-8字符?

Node.js检测非标准UTF-8字符的实现方案

直接提供两种可直接使用的实现:

方案1:已解码字符串快速检测

适合已经把CSV内容解码为字符串的场景,直接检测解码产生的替换字符�(U+FFFD):

function hasInvalidUrl(urlStr) {
  // 仅匹配解码失败产生的�字符,不会误判é这类合法UTF-8字符
  return /\uFFFD/.test(urlStr)
}

测试效果:

  • 错误URL:hasInvalidUrl('https://example.com/v�hicules-de-location/france') 返回 true
  • 正确URL:hasInvalidUrl('https://example.com/véhicules-de-location/france') 返回 false

如果需要额外过滤非打印控制字符,可以扩展正则规则:

// 过滤� + 除换行、制表符外的ASCII控制字符
return /[\uFFFD\u0000-\u0008\u000B-\u000C\u000E-\u001F]/.test(urlStr)

方案2:读取文件时直接校验Buffer(更推荐)

从数据源头上避免解码误差,准确率更高:

const fs = require('fs')

function isLegalUtf8Buffer(buffer) {
  try {
    // 解码后重新编码对比,判断原始编码是否完全符合UTF-8规范
    return Buffer.from(buffer.toString('utf8'), 'utf8').equals(buffer)
  } catch {
    return false
  }
}

// 读取CSV文件时使用
fs.readFile('urls.csv', (err, buffer) => {
  if (err) throw err
  if (!isLegalUtf8Buffer(buffer)) {
    console.log('CSV文件包含非标准UTF-8内容')
  }
  // 后续解析CSV流程
})

如果使用csv-parser等流式解析库,可在逐行获取数据后,单独对URL字段调用方案1的检测方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:24:03