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

Node.js读取properties文件时Unicode字符多出反斜杠问题求解

问题原因

Node.js原生读取文件时,会把properties文件中作为普通文本存在的\字符自动转义为\\,因此你看到的\\u00c5本质是原文件的\u被转义后的结果,并不是真的多写入了反斜杠。properties文件的Unicode转义规则是该格式的专属规范,需要专门的解析逻辑才能正确转换为对应字符。

解决方案

方案1:使用第三方properties解析库(推荐)

直接用成熟的properties包处理,自动兼容properties的所有规范,包括Unicode转义、键值对拆分、注释处理等,无需自己处理边界问题:

  1. 安装依赖:
npm install properties
  1. 读取代码示例:
const properties = require('properties');
const fs = require('fs');

fs.readFile('./Language.properties', 'utf8', (err, data) => {
  if (err) throw err;
  // 解析配置,开启unicode转义
  properties.parse(data, { unicode: true }, (err, result) => {
    if (err) throw err;
    // result就是解析完成的键值对对象
    console.log(result.actions); 
    console.log(result['add-attendee']);
  });
});

方案2:手动实现Unicode转义解析

如果不想引入第三方依赖,可以自己写正则替换逻辑处理转义:

const fs = require('fs');

// Unicode转义解析函数
function decodeUnicode(str) {
  return str.replace(/\\u([0-9a-fA-F]{4})/g, (match, code) => {
    return String.fromCharCode(parseInt(code, 16));
  });
}

fs.readFile('./Language.properties', { encoding: "utf-8" }, (err, data) => {
  if (!err) {
    // 先转义Unicode,再按行拆分处理键值对
    const decodedData = decodeUnicode(data);
    const config = decodedData.split(/\r?\n/).reduce((obj, line) => {
      const [key, ...valueParts] = line.split('=');
      if (key && valueParts.length) {
        obj[key.trim()] = valueParts.join('=').trim();
      }
      return obj;
    }, {});
    console.log(config);
  }
});

注意:你原来直接用split("=")拆分整个文件的写法存在问题,如果配置值中本身包含等号,会被错误拆分。上面的手动处理代码已经优化为按行拆分,避免该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:45:03