当前位置: 技术问答>java相关
Apache+Tomcat url传递的中文字符串乱码问题
来源: 互联网 发布时间:2015-09-18
本文导语: message = "用户名或密码错误,请重新输入"; response.sendRedirect("login.jsp?message="+message); //这里传递的参数在地址栏里就是????乱码 在Tomcat中则正常 有谁解决过?请帮忙 | 在4.0以后的版本,已经不需要象...
message = "用户名或密码错误,请重新输入";
response.sendRedirect("login.jsp?message="+message); //这里传递的参数在地址栏里就是????乱码
在Tomcat中则正常
有谁解决过?请帮忙
response.sendRedirect("login.jsp?message="+message); //这里传递的参数在地址栏里就是????乱码
在Tomcat中则正常
有谁解决过?请帮忙
|
在4.0以后的版本,已经不需要象3.23版本中使用字符转换函数:
(1)编译javabean时 javac 命令行加上-encoding ISO8859_1
(2)在Jsp头部中加入
(1)编译javabean时 javac 命令行加上-encoding ISO8859_1
(2)在Jsp头部中加入
|
public static String getStr(String strInString)
{
try {
return new String(strInString.getBytes("ISO8859-1"),"gb2312");
}
catch (Exception ex) {
return "";
}
}
public static String charToISO(String strInString){
try {
return new String(strInString.getBytes("gb2312"),"ISO8859-1");
}
catch (Exception ex) {
return "";
}
}
.....
String ranmessage = getStr(message);
response.sendRedirect("login.jsp?message="+ranmessage);
{
try {
return new String(strInString.getBytes("ISO8859-1"),"gb2312");
}
catch (Exception ex) {
return "";
}
}
public static String charToISO(String strInString){
try {
return new String(strInString.getBytes("gb2312"),"ISO8859-1");
}
catch (Exception ex) {
return "";
}
}
.....
String ranmessage = getStr(message);
response.sendRedirect("login.jsp?message="+ranmessage);
|
解决办法:
第一:
在jsp页面加入:
或者在servlet里面
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=gb2312");
上面的如果在不行就用如下的方法在数据入库前进行调用:
public static String UnicodeToChinese(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("ISO8859_1"),"gb2312");
return newstring;
}
catch(UnsupportedEncodingException e)
{
return s;
}
}
public static String ChineseToUnicode(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("gb2312"),"ISO8859_1");
return newstring;
}
catch(UnsupportedEncodingException e)
{
return s;
}
}
第一:
在jsp页面加入:
或者在servlet里面
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=gb2312");
上面的如果在不行就用如下的方法在数据入库前进行调用:
public static String UnicodeToChinese(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("ISO8859_1"),"gb2312");
return newstring;
}
catch(UnsupportedEncodingException e)
{
return s;
}
}
public static String ChineseToUnicode(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("gb2312"),"ISO8859_1");
return newstring;
}
catch(UnsupportedEncodingException e)
{
return s;
}
}
|
|
如果在你的URL中需要传递中文,就用java.net.URLEncoder.encode()进行编码,这样就可以解决了。
示例:
点击
在接受页面上面加上
如果要将数据插入数据库要做处理的
如将content的内容插入数据库,就要处理一下。
content = new String(content.getBytes("ISO8859_1"),"GB2312") ;
示例:
点击
在接受页面上面加上
如果要将数据插入数据库要做处理的
如将content的内容插入数据库,就要处理一下。
content = new String(content.getBytes("ISO8859_1"),"GB2312") ;