代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
IMAP文件夹名称编码和解码方法
作者:
Dezai.CN
/ 发布于
2013/10/22
/
432
// 编码 public class ImapFolderEncoder { public static String encode(String folder) { String rtn = "", base64; int index = 0; Pattern regAsis = Pattern.compile("\\G(?:[\\x20-\\x25\\x27-\\x7e])+"); Pattern reg26 = Pattern.compile("\\G&"); Pattern regEncode = Pattern.compile("\\G(?:[^\\x20-\\x7e])+"); Pattern regEq = Pattern.compile("=+$"); Pattern regSlash = Pattern.compile("\\/"); while (index < folder.length()) { Matcher m; m = regAsis.matcher(folder); if (m.find(index)) { index = index + (m.end() - m.start()); rtn = rtn + m.group(); continue; } m = reg26.matcher(folder); if (m.find(index)) { index = index + (m.end() - m.start()); rtn = rtn + "&-"; continue; } m = regEncode.matcher(folder); if (m.find(index)) { index = index + (m.end() - m.start()); base64 = SimpleUtil.encodeBase64Content(m.group(), "UTF-16BE"); base64 = base64.replaceAll(regEq.pattern(), ""); base64 = base64.replaceAll(regSlash.pattern(), ","); rtn = rtn + "&" + base64 + "-"; continue; } } return rtn; } } // 解码 public class ImapFolderDecoder { public static String decode(String folder) { String rtn = "", base64; int index = 0; Pattern regAsis = Pattern.compile("\\G([^&]+)"); Pattern reg26 = Pattern.compile("\\G\\&-"); Pattern regDecode = Pattern.compile("\\G\\&([A-Za-z0-9+,]+)-?"); Pattern regComma = Pattern.compile(","); while (index < folder.length()) { Matcher m; m = regAsis.matcher(folder); if (m.find(index)) { index = index + (m.end() - m.start()); rtn = rtn + m.group(); continue; } m = reg26.matcher(folder); if (m.find(index)) { index = index + (m.end() - m.start()); rtn = rtn + "&"; continue; } m = regDecode.matcher(folder); if (m.find(index)) { index = index + (m.end() - m.start()); base64 = m.group().substring(1, m.group().length() - 1); base64 = base64.replaceAll(regComma.pattern(), "/"); int mod = base64.length() % 4; int count = 4 - mod; while (count > 0) { base64 += "="; count--; } base64 = SimpleUtil.base64Decode(base64, "UTF-16BE"); rtn = rtn + base64; continue; } } return rtn; } }
试试其它关键字
IMAP
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
实现测量程序运行时间及cpu使用时间
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3