我有一些字符(ä,
å=u00e5
ä=u00e4
ö=u00f6
我现在无法摆脱这些,因为我使用的是旧技术Apache Wicket。我的语言。属性文件看起来像这样
calendar-event-group-configuration=Konfigurationsgrupp fu00f6r
evenemang
当我读取。properties文件时,我进入控制台(使用一个名为('properties-reader')的npm包):
Konfigurationsgrupp f\u00f6r evenemang
我期望得到:
Konfigurationsgrupp för evenemang
或
Konfigurationsgrupp fu00f6r evenemang
但这确实发生了,因为我的代码添加了一个因为使用了npm包'properties-reader'
下面是我的代码:const fs = require("fs");
const PropertiesReader = require("properties-reader");
const properties = PropertiesReader("./Language_sv.properties").getAllProperties();
console.log(properties);
有谁有更好的主意把所有属性放到对象
Language_sv。属性是文件有:
calendar-event-group-configuration=Konfigurationsgrupp fu00f6r
evenemang
我发现另一个名为('properties')的包没有上面的问题,但我不知道如何在函数之外获得对象(obj)
const fs = require("fs");
var prop = require ("properties");
prop.parse ("./Language_sv.properties", { path: true }, function (error, obj){
if (error) return console.error (error);
console.log (obj);
});
您可以使用unescape
const property = "calendar-event-group-configuration=Konfigurationsgrupp fu00f6r evenemang"
console.log(unescape(property));
您的问题是属性阅读器不理解unicode字符。绕过它的一种方法是在读取属性值后对其进行后处理。
const fs = require("fs");
const PropertiesReader = require("properties-reader");
const properties = PropertiesReader("./Language_sv.properties", 'utf-8').getAllProperties();
console.log(properties);
for(let i in properties){
properties[i] = properties[i].split('"').join('\"')
properties[i] = decodeURIComponent(
JSON.parse('"' +properties[i] + '"')
)
}
console.log(properties);
这里我把属性值转换成一个用引号括起来的字符串,然后用JSON.parse解析它。它正确解析转义的反斜杠。并且decodeuriccomponent将unicode转义序列转换为字符。