0

ハンガリー語のテキストがあり、UCS2 エンコーディングでエンコードしたい

String stringEncoding = "UCS-2";
String contentHardCoded = new String("szigorúan bejelentkezési azonosításhoz".getBytes(),stringEncoding);

しかし、次の例外が発生しています

Exception in thread "main" java.io.UnsupportedEncodingException: UCS-2
    at java.lang.StringCoding.decode(StringCoding.java:170)
    at java.lang.String.<init>(String.java:443)
    at java.lang.String.<init>(String.java:515)
    at com.gtl.mindmatics.sms.Main.sendSMS(Main.java:108)
    at com.gtl.mindmatics.sms.Main.main(Main.java:180)
Java Result: 1

何が間違っている可能性がありますか?

編集

次のコマンドを使用してjarファイルを実行します実際に私のコマンドは次のようなものです

java -Dfile.encoding=UCS-2 -cp MyApp.jar com.sms.Main "9876543210" “UCS-2” > testApp.log

また、使用すべき正しいエンコーディングは何か、UTF-8を使用しましたが、出力が正しくありません。

4

1 に答える 1

2

あなたは間違っています。aStringは一連の文字であり、それだけです。ここで行うことは次のとおりです。

  • 現在の JVM エンコーディングでデコードされた文字列のバイトを取得します。
  • 別のエンコーディングを使用してこれらのバイトを再エンコードします。

したがって、文字列は完全に破損します。AString にはエンコーディングがありません

詳しくはこちらをご覧ください。


UCS-2 に関しては、UTF-16 に取って代わられました。代わりに UTF-16 を使用します。

エンディアンを指定する必要があることに注意してください。これは、UTF-8 とは異なり、UTF-16 にとって重要です。使用する:

StandardCharsets.UTF_16LE

(またはBEビッグ エンディアンの場合)、または、まだ Java 6 以下を使用している場合:

Charset.forName("UTF-16LE") // or BE
于 2014-04-16T05:47:26.977 に答える