1

我编写了将传入字符串转换为 UTF-8 编码的小方法:

private String convertStringToUTF8( String pIncomingString ) throws CharacterCodingException {

        CharsetDecoder cd = Charset.availableCharsets().get("UTF-8").newDecoder( );
        CharBuffer buffer = cd.decode(ByteBuffer.wrap(pIncomingString.getBytes()));

        return buffer.toString();
    }

这在 Windows 机器上完美运行,例如 - 'Scúp' 被替换为 'Scúp'。但是,当部署到 Linux 时,它不起作用('Scúp' 仍然是 'Scúp')。有谁知道如何在 Linux 上解决这个烦人的问题?

4

2 回答 2

0

我通过添加 JVM 参数 -Dfile.encoding=ISO-8859-1 解决了这个问题。

于 2013-03-25T01:30:14.453 回答
0

在 Java 中,将字符串用作字节序列是不安全的。String.getBytes() 不保证每个字符返回一个字节。实际上,在默认编码通常为 UTF-8 的 Linux 中,String.getBytes() 会将 \u007f 以上的任何字符转换为多个字节。

总之,当你想存储一个字节序列时,使用byte[],而不是 String。

于 2013-03-25T01:46:58.560 回答