java - Apache通用配置库: corrupted property file

标签 java character-encoding apache-commons-config

我从客户那里收到了损坏的属性文件。该文件被应用程序修改以更新版本号。代码使用 apache commons configuration.当我测试时,该库似乎总是以 iso-8859-1 格式写入文件。

代码简化如下。以下代码写入错误文件的可能性有多大?

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;

import java.io.FileWriter;
import java.io.IOException;

public class TestConfig {

    public void editVersionInfo() throws ConfigurationException, IOException {

        String filename = "C:\\temp\\VersionProperties\\Version.properties";
        PropertiesConfiguration config = new PropertiesConfiguration(filename);
        config.setProperty("application.version", "2011");
        config.save(new FileWriter(filename));

    }

    public static void main(String[] args) throws IOException, ConfigurationException {
        TestConfig tc = new TestConfig();
        tc.editVersionInfo();
    }
}

以防万一 - 错误文件如下所示。它看起来不像任何编码。该文件最初是普通属性文件,键和值均为英文(ascii 字符)。

F????Co?aR??m??E?3#?? = h\u00BD5j\u00B3\u00E0\u0096\u001D\u0081fe\u00BEo\b\u00A3\u0001\u00FE\u00A4\u00DE\u0000\u00FBi\"\u009C{\u00FC\u00D9\u00E2?c\u00F6\u00FF%B\u00A47\u00195\u001EXv\u0097/\u00D7x\u0099\u000E\u00A2gIX\u0014\u0097]k\u00882\u0003\u0014\u0097\u00BC\u00C3\u00AE\u00B4\u001E\u00B3R\u00E4\u00DE&\u0000\u0016\u009B\"7\u0085'\"\u00DCT*v'\u0092\u0007\u0091A\u00BD\u00ACl6~\u0097\u00C0\u00B1\u00D1\u00EB\u00FF\u00A8\u00F3\u0001'\u00BF\u0006\u001F\u009C\fk\u009F\u00C2\u00D9L^_\u0004J4\u00AF\u00D8\u00DAW\u00C4\u00CDj\u00E3\u0095\u00D1+\u00CE?\u0004>Z]\u00D7\u000B\u0098\u0016\u0095\u00AC\u00F7\u00E7\u009ATF\u0019\f)\u00A3\u00A9\u00DC\u00AD\u00ACtq5\u0085\u008E-\u00A3oH\u0000\u00C2\u0092\u00B5\u00F2\u008AG\u008F&\u00F5\u0017H\u0003!\u0083\u00B4\u008AV=\u00E0\u00EDj\u00F0\u00D0J\u00DB\u00CC\u00F2O\u00CE\u00BE\u00F0*4\u0006y~\u00C3\u00B7\"\u000B\u00E4\u00C0$>\u00F3\u00F2~\u00CE\u0097#\u00BAc\u00EC@\u00B4\u00AD\u009A\u00BAX\fF\u0083]\u00C2\u00D4\u00AB\u00F3\u009DQ\u0092\u00854z\u0097\u00FDG\t\u0095\u00E3}ty\u0082I\u00C3`\u009E ??

编辑:客户环境是日语。无论应用程序如何始终运行 -Dfile.encoding=UTF8

最佳答案

我怀疑您的客户的默认字符编码与您的不同。检查其属性 file.encoding 的设置(我知道,其命名违反直觉)。

另一种可能性是您有两个线程写入该属性文件。我不知道,但我怀疑 Apache 库默认情况下不是线程安全的。

关于java - Apache通用配置库: corrupted property file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10142201/

相关文章:

javascript - 在 Javascript 的脚本标签中使用字符集

python - 为什么 rst2html5 会搞乱编码?

java - 无法保存到 JBoss 5.1 中的公共(public)配置

java - 使用 Apache 通用配置从字符串创建 JSON 配置

java - 使用 Spring 的 STOMP 上的 RPC,并正确处理传播到客户端的服务器端错误

Java 堆行为

java - 如何创建一个已检查异常的实用方法?

java - 由于对所需库的限制,对类的访问限制

Linux 上的字符集与 ODBC 到 SQL Server 不匹配

java - 将 org.apache.commons.configuration.Configuration 转换为 java.util.Properties 的直接方法