JAVA写的escape函数,可以处理JAVASCRIPT的ESCAPE处理的字符,避免字符集问题
2011-07-13 23:33
477 查看
public String escape(String src) {
int i;
char j;
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length() * 6);
for (i = 0; i < src.length(); i++) {
j = src.charAt(i);
if (Character.isDigit(j) || Character.isLowerCase(j)
|| Character.isUpperCase(j))
tmp.append(j);
else if (j < 256) {
tmp.append("%");
if (j < 16)
tmp.append("0");
tmp.append(Integer.toString(j, 16));
} else {
tmp.append("%u");
tmp.append(Integer.toString(j, 16));
}
}
return tmp.toString();
}
public String unescape(String src) {
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length());
int lastPos = 0, pos = 0;
char ch;
while (lastPos < src.length()) {
pos = src.indexOf("%", lastPos);
if (pos == lastPos) {
if (src.charAt(pos + 1) == 'u') {
ch = (char) Integer.parseInt(src
.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
} else {
ch = (char) Integer.parseInt(src
.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
} else {
if (pos == -1) {
tmp.append(src.substring(lastPos));
lastPos = src.length();
} else {
tmp.append(src.substring(lastPos, pos));
lastPos = pos;
}
}
}
return tmp.toString();
}
int i;
char j;
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length() * 6);
for (i = 0; i < src.length(); i++) {
j = src.charAt(i);
if (Character.isDigit(j) || Character.isLowerCase(j)
|| Character.isUpperCase(j))
tmp.append(j);
else if (j < 256) {
tmp.append("%");
if (j < 16)
tmp.append("0");
tmp.append(Integer.toString(j, 16));
} else {
tmp.append("%u");
tmp.append(Integer.toString(j, 16));
}
}
return tmp.toString();
}
public String unescape(String src) {
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length());
int lastPos = 0, pos = 0;
char ch;
while (lastPos < src.length()) {
pos = src.indexOf("%", lastPos);
if (pos == lastPos) {
if (src.charAt(pos + 1) == 'u') {
ch = (char) Integer.parseInt(src
.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
} else {
ch = (char) Integer.parseInt(src
.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
} else {
if (pos == -1) {
tmp.append(src.substring(lastPos));
lastPos = src.length();
} else {
tmp.append(src.substring(lastPos, pos));
lastPos = pos;
}
}
}
return tmp.toString();
}
相关文章推荐
- Java读取Unicode文件(UTF-8等)时碰到的BOM首字符问题,及处理方法
- 在解压gz文件时,如果直接用java.util.zip.GZIPInputStream来处理问题只能解压很少一部分内容,通过类MultiMemberGZIPInputStream 可以完全解压一个gz文件。
- 处理Java及其相关字符集编码的问题
- 优化读取的异步文件过多问题(方案:对于已经处理过的文件可以选择移除到备份文件夹下,避免处理前遍历文件过多)
- 【Java开发常见问题解决】文本框表情emoji字符过滤处理方法
- Java时间处理和int字符串补0问题
- java中字符处理问题
- java防SQL注入,HTML 特殊字符,JavaScript 特殊字符,SQL 特殊字符 处理
- java的byte与C#的异同引起的字符处理问题。
- apache-commons-lang StringEscapeUtils对SQL、HTML、XML、JavaScript、Java 特殊字符的转义和还原
- Java读取Unicode文件(UTF-8等)时碰到的BOM首字符问题,及处理方法
- Java IO 之 FileReader FileWriter 实现字符文件的复制(处理FileWriter新建文件失败的问题)
- 在Java中正确解码用Javascript:escape()编码的中文字符
- 在Java中正确解码用Javascript:escape()编码的中文字符
- 在Java中正确解码用Javascript:escape()编码的中文字符
- 在Java中正确解码用Javascript:escape()编码的中文字符
- 关于java和javascript交互中的日期处理问题汇总
- java及javascript处理金额小数点问题
- oracle数据库字符集US7ASCII,在java中处理中文问题
- oracle数据库字符集US7ASCII,在java中处理中文问题