我有一些匈牙利文字,我希望用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但输出不正确。
答案 0 :(得分:2)
你做错了; String
是一组字符,就是全部。你在这里做的是:
因此,您的字符串将完全损坏。 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