首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UCS-2的java.io.UnsupportedEncodingException

UCS-2的java.io.UnsupportedEncodingException
EN

Stack Overflow用户
提问于 2014-04-16 05:39:21
回答 1查看 5.4K关注 0票数 0

我有一些匈牙利文本,我希望它用UCS2编码编码。

代码语言:javascript
复制
String stringEncoding = "UCS-2";
String contentHardCoded = new String("szigorúan bejelentkezési azonosításhoz".getBytes(),stringEncoding);

但是我得到了下面的例外

代码语言:javascript
复制
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,但是输出不正确。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 05:47:26

您做错了;String是一组字符,仅此而已。你在这里所做的是:

  • 得到当前JVM编码解码的字符串的字节,
  • 使用不同的编码重新编码这些字节。

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

有关更多详细信息,请参阅这里

至于UCS-2,它已经被UTF-16取代了.你想用UTF-16代替。

请注意,您必须指定endianness,这对于UTF-16与UTF-8不同。使用:

代码语言:javascript
复制
StandardCharsets.UTF_16LE

(或大端点的BE ),或者,如果您仍然使用Java6或更低版本:

代码语言:javascript
复制
Charset.forName("UTF-16LE") // or BE
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23100894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档