【问题标题】:karaf configuration property is garbledkaraf 配置属性乱码
【发布时间】:2016-02-29 03:48:56
【问题描述】:

我实现了 org.osgi.service.cm.ManagedService 接口来获取 Karaf 配置。但是当我给属性一个中文值时,它是乱码。最初,etc文件夹中的文件是用latin1编码的。我试过设置utf-8编码,但是没有效果。谁能帮帮我?

【问题讨论】:

    标签: character-encoding osgi apache-karaf karaf


    【解决方案1】:

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

    felix.fileinstall.configEncoding = UTF-8
    

    在 Karaf 4 中检查了解决方案

    【讨论】:

      【解决方案2】:

      在 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 文件对配置文件进行编码。

      【讨论】:

      • 非常感谢,Jérémie B。这就是重点。我将文件更改为 ISO 8859-1 字符编码。然后将中文单词转换成Unicode格式。它现在可以运行了。谢谢。
      • 非常感谢@Jérémie B。您节省了我很多时间!
      • 同样的概念会影响 Apache Felix OSGi。
      猜你喜欢
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2017-02-06
      • 2015-06-29
      • 2021-06-22
      • 2017-12-10
      相关资源
      最近更新 更多