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