如果是英文字母、数字、下划线等不会引起混淆的字符,可以直接用该字符表示。
比如:? & = 空格 等字符在Url和Form 编码的时候有特殊用处就不能用文本表示。
不能直接用的字符,先用UTF-8编码,然后按字节再转换成文本方式。
每个字节用 %XX 的方式表示(XX是该字节的16进制)。
比如:? & = 空格 等字符在Url和Form 编码的时候有特殊用处就不能用文本表示。
不能直接用的字符,先用UTF-8编码,然后按字节再转换成文本方式。
每个字节用 %XX 的方式表示(XX是该字节的16进制)。
解决方案 »
- 这个思路是什么?谢了
- 违反唯一约束条件
- 關於利用myeclipse生成Hibernate Mapping文件
- jsp测试报错
- 【hibernate初学问题】在myeclipse中开发第一个hibernate程序遇到的问题
- ireport+jasper图形格式问题(急)
- 谁能教我写一个单点登陆系统(jsp+servlet+bean),解决此问题者,送800分!决不失言!
- JSP+JavaBean连接Access数据库???
- 使用Jbuilder的小问题
- @@@@servlet问题!!(但愿我这最后5分不要又是泥牛入海a!!!!!!)@@@@
- --判断网页的来源--
- 在.jsp中如何使用ssl连接postgresql数据库?
java.net.URLEncoder.encode(str,"UTF8");编码
java.net.URLDecoder.decode(str,"UTF8");解码
{
byte[] b;
try
{
b = s.getBytes("UTF8");
}
catch(java.io.UnsupportedEncodingException e)
{
//应该不会执行到这里
e.printStackTrace();
return null;
}
StringBuffer sb = new StringBuffer();
for(int i=0;i<b.length;i++)
{
int c = 0xff & (int)b[i];
if ((c >= 'A' && c <= 'Z')
|| (c>='a' && c <= 'z')
|| (c>='0' && c <= '9')
|| c=='_' || c=='.'
|| c=='-' || c=='*')
sb.append((char)c);
else if(c == ' ')
sb.append("%20");//标准上使用'+',但好像IE里都用%20
else
{
sb.append('%');
String s1 = Integer.toHexString(c).toUpperCase();
if (s1.length() == 1)
sb.append('0');
sb.append(s1);
}
}
return sb.toString();
}
public static String decoding(String s)
{
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
for(int i=0;i<s.length();i++)
{
int c = s.charAt(i);
if (c != '%')
out.write(c);
else
{
out.write(Integer.parseInt(s.substring(i+1,i+3),16));
i+=2;
}
}
try
{
return new String(out.toByteArray(), "UTF8");
}
catch(java.io.UnsupportedEncodingException e)
{
//应该不会执行到这里
e.printStackTrace();
return null;
}
}