karaf配置属性是乱码

时间:2016-02-29 03:48:57

标签: character-encoding osgi apache-karaf karaf

我实现了org.osgi.service.cm.ManagedService接口来获取Karaf配置。但是当我给该属性赋予中文值时,它就是乱码。最初,etc文件夹中的文件以latin1编码。我试图设置utf-8编码,但它没有效果。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

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

fileinstall尚未支持为配置指定自定义字符编码,它使用Properties类和Properties.load(InputStream),其中包含以下文档:

  

加载(Reader)/存储(Writer,String)方法加载和存储   简单的基于字符的流的属性   下面指定的面向行的格式。负载(InputStream)/   store(OutputStream,String)方法的工作方式与   load(Reader)/ store(Writer,String)对,输入/输出除外   流以ISO 8859-1字符编码编码。那些人物   不能直接表示在这种编码中可以编写使用   Unicode转义,如Java™语言的第3.3节中所定义   规格;只有一个' u'逃脱中允许角色   序列。 native2ascii工具可用于转换属性文件   与其他角色编码有关。

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

答案 1 :(得分:0)

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

felix.fileinstall.configEncoding = UTF-8

该解决方案已在Karaf 4中进行了检查