开发JSP时碰到的问题,%u554a这样的编码格式用什么解码? %u554a=啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好像%u554a 就是 '\u554a' 不知道你是什么情况这样应该可以 String ss[]="%u554a".split("%u"); for(int i=0;i<ss.length;i++){ if(ss[i].length()>0){ char a=(char) Integer.parseInt(ss[i],16); System.out.println(a); } } public static 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(); }String a = "%u554a";out.print(unescape(a));java版本的escape和unescape函数 http://www.blogjava.net/emu/articles/4773.html 哦,原来要自己解啊!多谢孟子,不过这种情况我比较喜欢用正则: static String unescape(String src) { //Pattern pattern=Pattern.compile("%u[0-9a-f]{4}", Pattern.CASE_INSENSITIVE); Pattern pattern=Pattern.compile("%u[0-9a-fA-F]{4}"); Matcher macher=pattern.matcher(src); StringBuffer buffer=new StringBuffer(); int start=0; while(macher.find()) { buffer.append(src, start, macher.start()); start=macher.start(); String code=src.substring(start+2, start+6); char ch=(char)Integer.parseInt(code, 16); buffer.append(ch); start=macher.end(); } buffer.append(src, start, src.length()); return buffer.toString(); } Java JDBC连数据库用命令提示符编译怎么加载.jar文件 关于日期格式化 关于finally的范围 执行时的问题,请高手指点! 哪位高手能提供一段编号自动增加的代码? 关于interbase连接的问题 服务器端程序与客户端的applet反复调试,不通。求高手帮助,解决后一定再开帖送分,谢谢! 急,批量文件读取问题?在线等待! 给个下载WebLogic的快速网址 如何在Java的JDK中加入别的类库!!!!! 关于static的用法 问一个关于界面和逻辑交互的问题
这样应该可以
String ss[]="%u554a".split("%u");
for(int i=0;i<ss.length;i++){
if(ss[i].length()>0){
char a=(char) Integer.parseInt(ss[i],16);
System.out.println(a);
}
}
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();
}String a = "%u554a";
out.print(unescape(a));java版本的escape和unescape函数 http://www.blogjava.net/emu/articles/4773.html
多谢孟子,不过这种情况我比较喜欢用正则:
static String unescape(String src) {
//Pattern pattern=Pattern.compile("%u[0-9a-f]{4}", Pattern.CASE_INSENSITIVE);
Pattern pattern=Pattern.compile("%u[0-9a-fA-F]{4}");
Matcher macher=pattern.matcher(src);
StringBuffer buffer=new StringBuffer();
int start=0;
while(macher.find()) {
buffer.append(src, start, macher.start());
start=macher.start();
String code=src.substring(start+2, start+6);
char ch=(char)Integer.parseInt(code, 16);
buffer.append(ch);
start=macher.end();
}
buffer.append(src, start, src.length());
return buffer.toString();
}