UCS-2的java.io.UnsupportedEncodingException

时间:2014-04-16 05:39:22

标签: java exception ucs2

我有一些匈牙利文字,我希望用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但输出不正确。

1 个答案:

答案 0 :(得分:2)

你做错了; String是一组字符,就是全部。你在这里做的是:

  • 您获取由当前JVM编码解码的字符串字节,
  • 使用不同的编码重新编码这些字节。

因此,您的字符串将完全损坏。 String 没有编码

有关详细信息,请参阅here


至于UCS-2,它已被UTF-16取代。您想要使用UTF-16。

请注意,您必须指定字节顺序,这对UTF-16不同,与UTF-8不同。使用:

StandardCharsets.UTF_16LE

(或BE为big endian),或者,如果您仍使用Java 6或更低版本:

Charset.forName("UTF-16LE") // or BE