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-16 很重要,与 UTF-8 不同。利用:

StandardCharsets.UTF_16LE

(或BE对于大端),或者,如果您仍然使用 Java 6 或更低版本:

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