java.io.UnsupportedEncodingException:cp932?
什么类型的内容会导致此异常java.io.UnsupportedEncodingException:cp932?,java,encoding,character-encoding,mime-types,openjdk,Java,Encoding,Character Encoding,Mime Types,Openjdk,什么类型的内容会导致此异常 Caused by: java.io.UnsupportedEncodingException: cp932 at sun.nio.cs.StreamDecoder.forInputStreamReader(StreamDecoder.java:71) at java.io.InputStreamReader.<init>(InputStreamReader.java:100) at com.google.c
Caused by: java.io.UnsupportedEncodingException: cp932
at sun.nio.cs.StreamDecoder.forInputStreamReader(StreamDecoder.java:71)
at java.io.InputStreamReader.<init>(InputStreamReader.java:100)
at com.google.code.com.sun.mail.handlers.text_plain.getContent(text_plain.java:109)
at com.google.code.javax.activation.DataSourceDataContentHandler.getContent(DataHandler.java:803)
at com.google.code.javax.activation.DataHandler.getContent(DataHandler.java:550)
at com.google.code.javax.mail.internet.MimeBodyPart.getContent(MimeBodyPart.java:639)
原因:java.io.UnsupportedEncodingException:cp932
位于sun.nio.cs.StreamDecoder.forInputStreamReader(StreamDecoder.java:71)
在java.io.InputStreamReader。(InputStreamReader.java:100)
在com.google.code.com.sun.mail.handlers.text\u plain.getContent(text\u plain.java:109)
位于com.google.code.javax.activation.DataSourceDataContentHandler.getContent(DataHandler.java:803)
在com.google.code.javax.activation.DataHandler.getContent(DataHandler.java:550)上
位于com.google.code.javax.mail.internet.MimeBodyPart.getContent(MimeBodyPart.java:639)
为什么OpenJDK不能处理这种编码?任何使用这种字符集/编码的文本或基于文本的内容 据介绍,CP932是Shift JIS的扩展。。。这是用于表示日语文本的字符集之一
根据,CP932位于“扩展编码集(包含在lib/charsets.jar中)”中。如果它不在OpenJDK的安装中,请查找提供额外Java字符集支持的yum/apt/which OpenJDK包。OpenJDK中对CP932的支持肯定在某处可用 OpenJDK也可能(尽管我不太可能)不承认“cp932”是它所指的“MS932”和“windows-31j”的别名
我查过了 问题是Java(不仅仅是OpenJDK!)根本无法识别“cp932”别名。它无法识别它的原因是别名是非标准的 此编码的官方(IANA认可)名称为“windows-31j”,默认情况下,Java还支持以下别名:
- “MS932”
- “windows-932”
- “CS31J”
- 拒绝/放弃无效内容。(确实如此。)
- 找出此内容的来源,并让他们修复错误的编码名称
- 在Google代码尝试使用编码名称之前,截取该编码名称,并用适当的标准名称替换非标准名称
- 使用hackery将编码别名添加到Oracle代码用于查找编码的私有数据结构中。(警告:这可能会使您的应用程序变得脆弱,并导致可移植性问题。)
- 针对请求为字符编码添加别名的简单方法的JavaSE提出RFE。(这是一个真正的长期解决方案,尽管您可以通过编写建议的增强并将其作为补丁提交给OpenJDK团队来加速它。)