将属性转换为javascript对象(错误字符结果)



我有一些字符(ä,, ö)的问题,通常我将它们转换为

å=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转义序列转换为字符。

相关内容

  • 没有找到相关文章

最新更新