Java8 FileSystems.getDefault抛出UnsupportedCharsetException

时间:2016-03-31 10:44:54

标签: java character-encoding java-8 filesystems

我有一个非常简单的代码:

{{1}}

它在Java7中运行良好

但抛出UnsupportedCharsetException:java8中的GBK,完全堆栈如下:

{{1}}

我在中文使用windows7 我的java8是:

  • Java(TM)SE运行时环境(版本1.8.0_66-b18)
  • Java HotSpot(TM)64位服务器VM(版本25.66-b18,混合模式)

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

尝试将“sun.jnu.encoding”属性更改为其他内容,例如:

-Dsun.jnu.encoding=UTF-8

或检查您的JVM是否包含GBK支持所需的“lib / charsets.jar”(http://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html

答案 1 :(得分:1)

似乎JRE安装程序只安装"扩展"如果语言环境需要字符集:https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html

  适用于所有平台(Solaris,Linux和Microsoft Windows)的Oracle Java SE Development Kit 7(Java SE 7)和适用于Solaris和Linux的Java SE Runtime Environment 7(JRE 7)支持所有编码这一页。 Oracle的JRE 7 for Microsoft Windows可以作为完整的国际版本或欧洲语言版本安装。 默认情况下,如果JRE 7安装程序识别出主机操作系统仅支持欧洲语言,则会安装欧洲语言版本。如果安装程序识别出需要任何其他语言,或者用户请求支持在定制安装中使用非欧洲语言,安装完整的国际版本。欧洲语言版本仅支持以下基本编码集表中显示的编码。国际版本(包括lib / charsets.jar文件)支持此页面上显示的所有编码。

这也适用于Java 8.我读到这意味着JDK支持所有字符集(包括lib/charsets.jar)。如果安装程序由具有欧洲语言环境的用户运行,则JRE会尝试安装最小环境并且不会安装扩展字符集(如GBK)。

<强>解决方案: 尝试安装JDK或将用户的区域和语言设置为中文(简体),然后重新安装JRE。