Quated-Printable解码及出错解决方式
来源:互联网 发布:51电子单片机原理图 编辑:程序博客网 时间:2024/06/14 00:14
Quated-Printable解码及出错解决方式
由于项目需要采用Quated-Printable,看了网上许多的解码程序,但解析后总出现中文乱码,于是比对代码后发现有点出入:
return new String(buffer.toByteArray(),“GBK”);
很多程序返回的字符串如上所示,或者为“UTF-8”格式,按照他的程序,我的程序得到的结果永远是乱码,于是乎把中文格式去掉,可得满意的结果。
还有一个问题,当自己在敲代码的时候一定要注意区分l和1。
附上正确的代码:
public final static String qpDecoding(String str) { if (str == null){ return ""; } try{ str = str.replaceAll("= ", ""); byte[] bytes = str.getBytes("US-ASCII"); for (int i = 0; i < bytes.length; i++){ byte b = bytes[i]; if (b != 95){ bytes[i] = b; } else { bytes[i] = 32; } } if (bytes == null){ return ""; } //二进制读取 ByteArrayOutputStream buffer = new ByteArrayOutputStream(); for (int i = 0; i < bytes.length; i++){ int b = bytes[i]; if (b =='='){ try{ //对数据操作 int u = Character.digit((char) bytes[++i], 16); int l = Character.digit((char) bytes[++i], 16); if (u == -1 || l == -1){ continue; } //这里是l不是1,看官请注意 buffer.write((char) ((u << 4) + l)); }catch (ArrayIndexOutOfBoundsException e){ e.printStackTrace(); } }else{ buffer.write(b); }} /* * 这条很关键,由于看了很多形式为 String(buffer.toByteArray(),"utf-8"(/"gbk")),得到的结果为中文乱码。于是乎,看了一篇博文,干脆就不用格式,最终得到正确的中文字符*/ return new String(buffer.toByteArray()); }catch (Exception e){ e.printStackTrace(); return ""; }}
1 0
- Quated-Printable解码及出错解决方式
- Qt quoted Printable 解码
- quoted-printable 编码与解码
- eml之quoted-printable 解码
- DNS解析服务的方式及出错解决方式
- MIME之Quoted-Printable编解码
- Quoted-Printable编码/解码c#类代码
- Quoted-Printable解码后为何还是乱码
- MIME之Quoted-Printable编解码
- MIME之Quoted-Printable编解码
- C#导出VCF格式电话本,遇到QUOTED-PRINTABLE编码的问题,附带QUOTED-PRINTABLE编码解码
- python模块之quopri: quoted-printable编解码
- 用于Quoted-Printable编解码的JAVA类
- C# 对Quoted-Printable进行解码的方法
- python模块之quopri: quoted-printable编解码
- Quoted-Printable编码原理及代码实现
- 安装clusterware出错及解决
- tslib 安装出错及解决
- 1034. 有理数四则运算(20)
- 两个栈实现队列 两个队列实现栈
- 那些程序员们后知后觉的职涯经验
- getActionBar().setDisplayHomeAsUpEnabled(true)报错空指针异常
- ASP.Net程序插入错误: 列名或所提供值的数目与表定义不匹配
- Quated-Printable解码及出错解决方式
- opencv清晰度,色偏等评价函数
- Spring Boot实战之全局异常捕获 实现参数异常检查返回统一错误信息
- 简单题:Your task is to Calculate a + b.
- LeetCode 2. Add Two Numbers
- Animation-Layer
- const 常量指针
- MySQL中的数据类型
- 一文看尽中国互动直播行业——低俗无聊?那是现状,不是未来