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()は、文字ごとに1バイトを返すことが保証されていません。実際、デフォルトのエンコーディングが通常UTF-8であるLinuxでは、String.getBytes()は\u007fより上の文字を複数のバイトに変換します。

要約すると、バイトのシーケンスを格納する場合はbyte[]、文字列ではなく、を使用します。

于 2013-03-25T01:46:58.560 に答える