开发JSP时碰到的问题,%u554a这样的编码格式用什么解码?

Brunhild 2007-08-14 02:39:24
%u554a=啊

...全文
336 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Brunhild 2007-08-14
  • 打赏
  • 举报
回复
哦,原来要自己解啊!
多谢孟子,不过这种情况我比较喜欢用正则:
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();
}

孟子E章 2007-08-14
  • 打赏
  • 举报
回复
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
piaopiao11 2007-08-14
  • 打赏
  • 举报
回复
不知道你是什么情况
这样应该可以
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);
}
}
孟子E章 2007-08-14
  • 打赏
  • 举报
回复
unicode
Brunhild 2007-08-14
  • 打赏
  • 举报
回复
该如何解码呢?
piaopiao11 2007-08-14
  • 打赏
  • 举报
回复
好像%u554a 就是 '\u554a'

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧