`
chensl
  • 浏览: 57948 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java添加UTF-7字符集支持(转)

 
阅读更多

这段时间在做PushServer时,需要对编码过的邮件标题及发信人进行解码,然而开发的时候发现Javamail无法对UTF-7等编码解码,会抛出UnsupportedEncodingException。查看过JDK中rt.jar的部分代码,也看过javamail的部分代码,总结原因如下:JDK本身并不支持UTF-7字符集。关于这个bug(传送门),很早之前就有人反馈过给SUN了,但SUN已经明确表示不会修复这个bug,所以要想支持UTF-7字符集就必须自己写对应的Charset。

        当然,秉承不重复发明轮子的精神,如果有人已经提供了这样的类的话我们就没必要再自己重新实现了。确实已经有人做了这样的事,jcharset(传送门)这个项目已经提供了UTF-7、UTF-7-OPTIONAL等字符集的实现方式,只需要下载jcharset.jar并将其放到${JAVA_HOME}/jre/lib/ext/下即可(这是SUN JRE的一个bug),这样就已经可以对UTF-7编码的字符串进行解码了。需要注意的是jcharset项目是在GPL许可下发布的,若只是需要添加UTF-7字符集的支持的话,可以考虑jutf7项目(传送门),这个项目是在MIT许可下发布的,这样做2次开发之类的都方便。若需要自己添加其他字符集的支持,可以参考jcharset、jutf7等项目。

 

 

 

原文 http://dhf.blog.163.com/blog/static/1190431592010035472797/

分享到:
评论
1 楼 chensl 2014-09-04  
说下最后解决办法吧,只是加了一个jutf7-1.0.0包就解决了,从sf上下载的,上面文章中提到的jar包,不确定是不是管用

相关推荐

    linux下设置mysql字符集为UTF-8以及mysql重启.docx

    为了支持多语言或特定字符集的需求,如中文、日文等,配置MySQL字符集至关重要。UTF-8字符集是一种非常常见且兼容性极强的编码方式,它可以表示世界上几乎所有的文字。本教程将详细介绍如何在Linux环境下设置MySQL...

    Java 程序转码(UTF-8)

    字符编码是计算机用来表示字符集的一种方式。常见的字符编码有ASCII、GB2312、GBK、UTF-8等。其中,UTF-8是一种变长字符编码,用于Unicode编码标准,兼容ASCII,并且能够高效地存储大多数非英文字符。 ##### 2. UTF...

    解决Invalid byte 1 of 1-byte UTF-8 sequence

    这通常是因为文件或数据流被错误地识别为不同的字符集,如GBK,导致解码失败。 标签 "tomcat" 提示问题与Apache Tomcat有关,Tomcat是一个流行的Java应用服务器,用于部署和运行Java Servlet和JavaServer Pages...

    java连接AmericanascII7字符集oracle例子

    在Java开发中,连接Oracle数据库是一项常见的任务,尤其是在处理特定字符集如American ASCII7时,开发者需要对字符编码有深入的理解。Oracle数据库支持多种字符集,包括ASCII,它是最基础的7位字符集,包含32个控制...

    db2驱动包utf-8 GBK 都支持

    标题提到“db2驱动包utf-8 GBK 都支持”,这意味着该驱动程序兼容两种常见的字符编码格式:UTF-8和GBK。 UTF-8是一种广泛使用的Unicode编码,几乎支持全球所有语言的字符,包括中文。在处理多语言环境或者需要国际...

    GBK文件夹转化UTF-8 支持文件名

    相比之下,UTF-8是一种基于Unicode的编码方式,能够表示世界上几乎所有的字符集,包括各种语言的文字和符号。UTF-8的广泛使用使得它成为现代软件开发中的首选编码格式,尤其在网络传输和跨平台操作中。 针对“GBK...

    java读写Xml文件(UTF-8) 【一】

    - 当使用`DocumentBuilderFactory`时,确保没有默认的字符集设定,可以使用`setCoalescing(true)`、`setIgnoringElementContentWhitespace(true)`等方法优化输出。 以下是一个简单的XML读写示例: ```java import ...

    解决source insight3.5不支持中文utf8问题

    这个问题主要源于Source Insight对非ASCII字符的处理机制,它可能期望的是其他字符集,如GBK或ISO-8859-1。 解决这个问题的方法通常包括以下步骤: 1. **配置Source Insight的编码设置**:进入Source Insight的...

    jmeter5.0官网utf-8编码

    - 在处理国际化内容时,UTF-8编码是标准选择,因为它支持几乎所有的字符集,包括中文字符。 - 如果JMeter的源码不是以UTF-8编码,可能会导致在处理包含非ASCII字符的请求或响应时出现乱码。 - 修改为UTF-8编码后...

    批量将Java源代码文件的编码从GBK转为UTF-8

    UTF-8则是Unicode的一种变体,使用1到4个字节来表示一个字符,它包含了全世界几乎所有的字符集。 在Java中,我们可以使用`java.nio.charset`包下的类来处理文件编码的转换。例如,`Charset`类用于表示字符集,`...

    Java UTF-7 Charset support-开源

    字符集实现添加了对UTF-7的编码和解码支持(如RFC 2152中的两个变体),并为Java修改了UTF-7(RFC 3501)。 支持的UTF-7的两个变体在为Set O选择的编码(可选的直接字符)方面有所不同。

    Java中字符集的详细介绍

    Java中的字符集是一个重要的概念,尤其对于处理多语言文本或者跨平台的数据交换至关重要。Java语言内部使用Unicode编码,具体来说是UTF-16格式,这意味着每个`char`类型变量能够表示一个Unicode字符,通常占据两个...

    中文转utf8 16

    **UTF-8(8位 Unicode 转换格式)**是一种变长字符编码,用于表示 Unicode 字符集。它能高效地表示 ASCII 字符,并支持世界上几乎所有的字符。在 UTF-8 中,一个字符可以占用 1 至 4 个字节。对于中文字符,通常使用...

    jdbc连接oracle字符集不同出现乱码

    这是因为 Java 在处理字符串时默认按照特定的字符集进行解码,而在本例中,Java 应用期望使用 `ZHS16GBK` 解码,但实际上却按照 `US7ASCII` 编码的数据进行了解码,从而导致乱码现象的发生。 #### 解决方案 为了...

    javabase64-1.3.1.jar

    - `encodeString` 和 `decodeString` 方法:用于字符串的编码和解码,字符串通常是用特定的字符集(如UTF-8)编码的字节序列。 2. Encoder 和 Decoder 接口:可能提供自定义编码和解码的实现,以满足特定需求。 ...

    java中文乱码之解决URL中文乱码问题的方法

    - 对于Tomcat等服务器,可以在服务器配置中设置默认编码,以确保所有请求都以特定的字符集(如UTF-8)解析。这通常涉及修改服务器的`server.xml` 文件,设置`URIEncoding` 属性,例如:`<Connector URIEncoding="...

    Java乱码问题

    这个问题通常出现在Windows操作系统下的开发环境中,由于编码方式不一致导致的字符集冲突,使得原本正常的中文字符无法被正确识别。 #### 什么是乱码? 乱码是指在计算机系统中由于字符编码不匹配而导致的文字显示...

    Java中文乱码浅析及解决方案

    Tomcat应用服务器允许我们配置字符集编码,如在server.xml中设置`URIEncoding`和`useBodyEncodingForURI`属性。在Spring Boot中,可以使用以下配置: ```yaml server: tomcat: uri-encoding: UTF-8 spring: ...

    修改tomcat的编码为utf-8

    在Web应用中,使用UTF-8作为字符集可以避免字符集转换的问题,减少乱码的发生几率。特别是在处理包含中文、日文、韩文等非英文字符的数据时,UTF-8能提供更好的支持。 #### 二、如何修改Tomcat的编码 ##### 1. ...

    mysql字符集设置

    - 在应用程序中设置正确的字符集,如Java的JDBC连接字符串中指定`useUnicode=true&characterEncoding=utf8`。 5. **常见字符集选择**: - **ASCII**:英文字符集,占用空间小但无法表示中文。 - **GBK**:包含大...

Global site tag (gtag.js) - Google Analytics