【发布时间】:2016-02-29 03:48:56
【问题描述】:
我实现了 org.osgi.service.cm.ManagedService 接口来获取 Karaf 配置。但是当我给属性一个中文值时,它是乱码。最初,etc文件夹中的文件是用latin1编码的。我试过设置utf-8编码,但是没有效果。谁能帮帮我?
【问题讨论】:
标签: character-encoding osgi apache-karaf karaf
我实现了 org.osgi.service.cm.ManagedService 接口来获取 Karaf 配置。但是当我给属性一个中文值时,它是乱码。最初,etc文件夹中的文件是用latin1编码的。我试过设置utf-8编码,但是没有效果。谁能帮帮我?
【问题讨论】:
标签: character-encoding osgi apache-karaf karaf
有一种方法可以更改 cfg 文件的编码。 fileinstall 子项目轮询 etc/*.cfg 文件的配置写在 config.properties 文件中。 你可以添加
felix.fileinstall.configEncoding = UTF-8
在 Karaf 4 中检查了解决方案
【讨论】:
在 Karaf 中,配置文件(即etc/*.cfg)由 felix 子项目“fileinstall”处理。
fileinstall 尚不支持为配置指定自定义字符编码,它使用Properties 类和Properties.load(InputStream),其中文档:
load(Reader) / store(Writer, String) 方法加载和存储 一个简单的基于字符的流的属性 下面指定的面向行的格式。负载(输入流)/ store(OutputStream, String) 方法的工作方式与 load(Reader)/store(Writer, String) 对,输入/输出除外 流以 ISO 8859-1 字符编码编码。字符 不能直接用这种编码表示可以写成 The Java™ Language 3.3 节中定义的 Unicode 转义 规格;转义中只允许使用一个 'u' 字符 顺序。 native2ascii 工具可用于转换属性文件 往返于其他字符编码。
因此,您必须在 ISE-8859-1 中对文件进行编码并引用每个 UTF 字符,或者使用 xml 文件对配置文件进行编码。
【讨论】: