您的位置:首页 > 其它

主流需求管理工具对比

2012-12-14 10:47 190 查看
java编程经常遇到乱码问题解决的办法主要时设置字符集。比如:

1、常见的post和get提交:

 

psot解决方案:(前台页面和后台最好保持统一编码)
request.setCharacterEncoding("UTF-8");
String name = new String(name.getBytes("ISO8859-1"), "UTF-8");//IE下设为GBK 火狐和谷歌chrome设为UTF-8
get解决方案:(网上说改tomcatserver.xml,但是我没有成功。不知哪里有误)
String name = new String(name.getBytes("ISO8859-1"), "UTF-8");

 

 2、下载时候乱码,FF和IE、Chrome又有所不同:

 

String       strWenJianMing = new String(strWenJianMing.getBytes("ISO8859-1"), "UTF-8");

response.setContentType("application/x-msdownload;charset=utf-8");
String agent = request.getHeader("user-agent").toLowerCase();
if(agent != null && agent.indexOf("firefox") >-1) {// FF
String enableFileName = strWenJianMing;
try {
enableFileName = "=?UTF-8?B?" + (new String(Base64.encode(strWenJianMing.getBytes("UTF-8")))) + "?=";
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
response.setHeader("Content-Disposition", "attachment; filename=" + enableFileName);
} else { // IE,chrome
response.setHeader("Content-Disposition", "attachment; filename=" + getUTF8toString(strWenJianMing));
}

//uft-8转字符串
public static String getUTF8toString(String s) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= 0 && c <= 255) {
sb.append(c);
} else {
byte[] b;
try {
b = Character.toString(c).getBytes("utf-8");
} catch (Exception ex) {
System.out.println(ex);
b = new byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
if (k < 0)
k += 256;
sb.append("%" + Integer.toHexString(k).toUpperCase());
}
}
}
String s_utf8 = sb.toString();
sb.delete(0, sb.length());
sb.setLength(0);
sb = null;
return s_utf8;
}

 

上次项目中出现乱码问题。头说用编码和解码的方式,后台传一个编码过去,提交过来的时候又解码一次。在项目中还真拍上大用场。省去很多处理乱码的事情,当然有些地方还是不能用的。比如用get方式传递没有编码的中文参数还是不行的,除非在前台编好码。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: