Character encoding karaf配置属性乱码

Character encoding karaf配置属性乱码,character-encoding,osgi,apache-karaf,karaf,Character Encoding,Osgi,Apache Karaf,Karaf,我实现org.osgi.service.cm.ManagedService接口以获得Karaf配置。但是当我给属性一个中文值时,它是乱码的。最初,etc文件夹中的文件是用拉丁文1编码的。我尝试设置utf-8编码,但没有效果。有人能帮我吗?在Karaf中,配置文件(即etc/*.cfg)由felix子项目“fileinstall”处理 fileinstall尚不支持为配置指定自定义字符编码,它使用Properties类和Properties.load(InputStream),其中说明: load

我实现org.osgi.service.cm.ManagedService接口以获得Karaf配置。但是当我给属性一个中文值时,它是乱码的。最初,etc文件夹中的文件是用拉丁文1编码的。我尝试设置utf-8编码,但没有效果。有人能帮我吗?

在Karaf中,配置文件(即
etc/*.cfg
)由felix子项目“fileinstall”处理

fileinstall尚不支持为配置指定自定义字符编码,它使用
Properties
类和
Properties.load(InputStream)
,其中说明:

load(Reader)/store(Writer,String)方法load和store 在简单模式中从和到基于字符的流的属性 下面指定的面向行的格式。加载(InputStream)/ 存储(OutputStream,String)方法的工作方式与 加载(读卡器)/存储(写卡器、字符串)对,输入/输出除外 流采用ISO 8859-1字符编码。人物 无法在此编码中直接表示,可以使用 Unicode转义如Java规范第3.3节所定义™ 语言 规范;转义中只允许一个“u”字符 序列native2ascii工具可用于转换属性文件 与其他字符编码之间的交互


因此,您必须在ISE-8859-1中对文件进行编码,并引用每个UTF字符,或者使用xml文件对配置文件进行编码。

有一种方法可以更改cfg文件的编码。 fileinstall子项目轮询etc/*.cfg文件的配置写在config.properties文件中。 你可以加上

felix.fileinstall.configEncoding = UTF-8

这个解决方案是用Karaf 4检查的

非常感谢你,Jérémie B。这就是重点。我将文件更改为ISO 8859-1字符编码。然后将中文转换成Unicode格式。现在可以运行了。谢谢。非常感谢,@Jérémie B。你节省了我很多时间!同样的概念也会影响ApacheFelixOSGi。