用英文登录可以显示正常,但用中文登录显示乱码,附件为乱码页面:
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="psdi.util.*, java.net.URLEncoder" %>
<jsp:useBean id="paramBean" scope="request" class="com.actuate.reportcast.utils.ParamHandlerBean" />
<jsp:setProperty name="paramBean" property="request" value="<%= request %>" />
<%
session.setAttribute("loginPassword2", null);
String sPassword = paramBean.getParameter("password");
String spsPassword = sPassword;
String sUserName = paramBean.getParameter("userName");
String sUser = paramBean.getParameter("ParmUserName");
String sPass = paramBean.getParameter("ParmPassword");
String reportDesc = paramBean.getParameter("reportDesc");
String directPrint = paramBean.getParameter("PrintAttach");
String mrolocale = paramBean.getParameter("locale");
String mroUniqueKey = paramBean.getParameter("mroUniqueKey");
String attachDirName = paramBean.getParameter("attachDirName");
if (!(sPassword == "" || sPassword == null)) {
session.setAttribute("loginPassword",sPassword);
sPassword = sPassword.replaceAll("%", "%25");
sPassword = CipherPlusBase64.decrypt(sPassword, true);
} else {
sPassword = (String) session.getValue("loginPassword");
sPassword = sPassword.replaceAll("%", "%25");
sPassword = CipherPlusBase64.decrypt(sPassword, true);
}
if (application.getServerInfo().toLowerCase().indexOf("weblogic") > -1)
sPassword = sPassword.replaceAll("%", "%25");
// always escape for sps.
spsPassword = sPassword.replaceAll("%", "%25");
if (!(reportDesc == "" || reportDesc == null)) {
session.setAttribute("reportDescription",reportDesc);
} else {
session.setAttribute("reportDescription","");
}
if (!(sUserName == "" || sUserName == null)) {
session.setAttribute("UserName", sUserName);
} else {
session.setAttribute("UserName","");
}
if (!(spsPassword == "" || spsPassword == null)) {
session.setAttribute("Password", spsPassword);
//System.out.println("password-do: " + spsPassword);
} else {
session.setAttribute("Password","");
}
if (!(directPrint == "" || directPrint == null)) {
session.setAttribute("PrintAttach", directPrint);
} else {
session.setAttribute("PrintAttach","");
}
if (!(mrolocale == "" || mrolocale == null)) {
session.setAttribute("mrolocale", mrolocale);
} else {
session.setAttribute("mrolocale","");
}
if (!(mroUniqueKey == "" || mroUniqueKey == null)) {
session.setAttribute("mroUniqueKey", mroUniqueKey);
} else {
session.setAttribute("mroUniqueKey","");
}
if (!(attachDirName == "" || attachDirName == null)) {
session.setAttribute("attachDirName", attachDirName);
} else {
session.setAttribute("attachDirName","");
}
%>
<jsp:forward page="/executereport.do" >
<jsp:param name="password" value="<%=sPassword%>"/>
<jsp:param name="jobType" value="sync"/>
<jsp:param name="__progressive" value="True"/>
<jsp:param name="postback" value="false"/>
<jsp:param name="invokeSubmit" value="true"/>
<jsp:param name="doframe" value="true"/>
</jsp:forward> 错误现象:
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="psdi.util.*, java.net.URLEncoder" %>
<jsp:useBean id="paramBean" scope="request" class="com.actuate.reportcast.utils.ParamHandlerBean" />
<jsp:setProperty name="paramBean" property="request" value="<%= request %>" />
<%
session.setAttribute("loginPassword2", null);
String sPassword = paramBean.getParameter("password");
String spsPassword = sPassword;
String sUserName = paramBean.getParameter("userName");
String sUser = paramBean.getParameter("ParmUserName");
String sPass = paramBean.getParameter("ParmPassword");
String reportDesc = paramBean.getParameter("reportDesc");
String directPrint = paramBean.getParameter("PrintAttach");
String mrolocale = paramBean.getParameter("locale");
String mroUniqueKey = paramBean.getParameter("mroUniqueKey");
String attachDirName = paramBean.getParameter("attachDirName");
if (!(sPassword == "" || sPassword == null)) {
session.setAttribute("loginPassword",sPassword);
sPassword = sPassword.replaceAll("%", "%25");
sPassword = CipherPlusBase64.decrypt(sPassword, true);
} else {
sPassword = (String) session.getValue("loginPassword");
sPassword = sPassword.replaceAll("%", "%25");
sPassword = CipherPlusBase64.decrypt(sPassword, true);
}
if (application.getServerInfo().toLowerCase().indexOf("weblogic") > -1)
sPassword = sPassword.replaceAll("%", "%25");
// always escape for sps.
spsPassword = sPassword.replaceAll("%", "%25");
if (!(reportDesc == "" || reportDesc == null)) {
session.setAttribute("reportDescription",reportDesc);
} else {
session.setAttribute("reportDescription","");
}
if (!(sUserName == "" || sUserName == null)) {
session.setAttribute("UserName", sUserName);
} else {
session.setAttribute("UserName","");
}
if (!(spsPassword == "" || spsPassword == null)) {
session.setAttribute("Password", spsPassword);
//System.out.println("password-do: " + spsPassword);
} else {
session.setAttribute("Password","");
}
if (!(directPrint == "" || directPrint == null)) {
session.setAttribute("PrintAttach", directPrint);
} else {
session.setAttribute("PrintAttach","");
}
if (!(mrolocale == "" || mrolocale == null)) {
session.setAttribute("mrolocale", mrolocale);
} else {
session.setAttribute("mrolocale","");
}
if (!(mroUniqueKey == "" || mroUniqueKey == null)) {
session.setAttribute("mroUniqueKey", mroUniqueKey);
} else {
session.setAttribute("mroUniqueKey","");
}
if (!(attachDirName == "" || attachDirName == null)) {
session.setAttribute("attachDirName", attachDirName);
} else {
session.setAttribute("attachDirName","");
}
%>
<jsp:forward page="/executereport.do" >
<jsp:param name="password" value="<%=sPassword%>"/>
<jsp:param name="jobType" value="sync"/>
<jsp:param name="__progressive" value="True"/>
<jsp:param name="postback" value="false"/>
<jsp:param name="invokeSubmit" value="true"/>
<jsp:param name="doframe" value="true"/>
</jsp:forward> 错误现象:
不会吧!!jsp乱码不是很复杂啊!!
删了,然后把第一句话的字符集改成gbk
关于编码解码: 从jsp -> db 中的过程。怎么转化!页面编码
服务器编码
滤器编码
db 编码大多了!.....每一个设置都有可能影响结果!这个问题提的人太多了。一开始的确让人头痛!
1、添加:<%@ page contentType="text/html; charset=gb2312"%>
2、类似方法 new String(iso.getBytes("ISO-8859-1"),"GB2312");
3、更改fitler和web.xml
对了,我用的发布平台是weblogic
不知道怎么配置
2、也是
3、还不清楚
试试
<% response.setCharacterEncoding("GBK")%>
response相反
<jsp:useBean id="paramBean" scope="request" class="com.actuate.reportcast.utils.ParamHandlerBean" />
UTF-8和GBK编码方式不一样啊,一个占3字节一个站2字节
好的,主要是所有代码都是 UTF-8 数据库确实 GBK16,这个会不会有冲突?
不要以为只有URL里面的数据才可以这样
应该在传之前encodeURIComponent(url)一把
然后将所有的charset=UTF-8改为charset=GBK
或者使用过滤器也可以的。
import java.io.*;public class TransFormat {
// 插入数据库之前使用此方法进行转换
public static String GBToUnicode(String strIn)
{
byte[] b;
String strOut = null;
if(strIn == null || (strIn.trim()).equals(""))
return strIn;
try
{
b = strIn.getBytes("GBK");
strOut = new String(b,"ISO8859_1");
}
catch(UnsupportedEncodingException e)
{
}
return strOut;
} // 从数据库取数据库后使用此方法进行转换
public static String UnicodeToGB(String strIn)
{
String strOut = null;
int strLen = 0;
strOut = ""; if(strIn == null || (strIn.trim()).equals(""))
return strIn;
try
{
byte[] b = strIn.getBytes("ISO8859_1");
strOut = new String(b,"GBK"); // 处理存在半个汉字的情况
strLen = strOut.length();
if(strLen == 0)
{
String tempStr = null;
strLen = b.length;
tempStr = strIn.substring(0,strLen - 1);
byte[] b1 = tempStr.getBytes("ISO8859_1");
strOut = new String(b1,"GBK");
b1 = null;
}
b = null;
}
catch(Exception e)
{
}
return strOut;
} // 一般情况下不调用该方法
// 两种字符集的转换
public static String ChangeUnicode(String strIn,
String SourceCode,String TargetCode)
{
String strOut = null;
if(strIn == null || (strIn.trim()).equals(""))
return strIn;
try
{
byte[] b = strIn.getBytes(SourceCode);
strOut = new String(b,TargetCode);
}
catch(Exception e)
{
}
return strOut;
}}
=====
a.jsp<%
out.println(UnicodeToGB(request.getparameter(menthod)));
%>
不然直接的话,有时候还是不行的
http://topic.csdn.net/u/20100605/09/d25cbf52-c691-494a-ba95-232a6581ddf1.html?47435
没人要分吗!!
<Connector port="8181" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>