在weblogic中的乱码我没遇到过,给你转贴一段代码,可能能用上,是先把中文转成英文,再把英文转成中文的,只要英文不乱码,应该就不会有乱码了.[转]
将中英文字串转换成纯英文字串
public static String toTureAsciiStr(String str){
StringBuffer sb = new StringBuffer();
byte[] bt = str.getBytes();
for(int i =0 ;i〈bt.length;i++){
if(bt[i]〈0){
//是汉字去高位1
sb.append((char)(bt[i]&&0x7f));
}else{//是英文字符 补0作记录
sb.append((char)0);
sb.append((char)bt[i]);
}
}
return sb.toString();
}
将经转换的字串还原
public static String unToTrueAsciiStr(String str){
byte[] bt = str.getBytes();
int i,l=0,length = bt.length,j=0;
for(i = 0;i〈length;i++){
if(bt[i] == 0){
l++;
}
}
byte []bt2 = new byte[length-l];
for(i =0 ;i〈length;i++){
if(bt[i] == 0){
i++;
bt2[j] = bt[i];
}
else{
bt2[j] = (byte)(bt[i]|0x80);
}
j++;
}
String tt = new String(bt2);
return tt;
}
将中英文字串转换成纯英文字串
public static String toTureAsciiStr(String str){
StringBuffer sb = new StringBuffer();
byte[] bt = str.getBytes();
for(int i =0 ;i〈bt.length;i++){
if(bt[i]〈0){
//是汉字去高位1
sb.append((char)(bt[i]&&0x7f));
}else{//是英文字符 补0作记录
sb.append((char)0);
sb.append((char)bt[i]);
}
}
return sb.toString();
}
将经转换的字串还原
public static String unToTrueAsciiStr(String str){
byte[] bt = str.getBytes();
int i,l=0,length = bt.length,j=0;
for(i = 0;i〈length;i++){
if(bt[i] == 0){
l++;
}
}
byte []bt2 = new byte[length-l];
for(i =0 ;i〈length;i++){
if(bt[i] == 0){
i++;
bt2[j] = bt[i];
}
else{
bt2[j] = (byte)(bt[i]|0x80);
}
j++;
}
String tt = new String(bt2);
return tt;
}
contentType="text/html;charset=GBK" %>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<body>
<%
response.sendRedirect("error.jsp?errmsg="+URLDecoder.decode("为什么不能显示中文"));
%>error.jsp<%@ page language="java" import="java.net.*"%>
<%
String errmsg=new String(request.getParameter("errmsg").getBytes("ISO8859_1"),"gb2312");
out.println(errmsg);
%>
<%@ page language="java" import="java.net.*"
contentType="text/html;charset=gb2312" %>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<body>
<%
if(request.getParameter("errmsg")!=null) {
String errmsg=new String(request.getParameter("errmsg").getBytes("ISO8859_1"),"gb2312");
out.println(errmsg);
return;
}
response.sendRedirect(request.getServletPath()+"?errmsg="+URLEncoder.encode("为什么不能显示中文"));
%>
ok???
<%@ page language="java" import="java.util.*,java.sql.*,java.net.*"%>
<%@ page contentType="text/html;charset=gb2312"%>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<%
String username="";
if(request.getParameter("username")!=null)
username=new String(request.getParameter("username").getBytes("ISO8859_1"),"gb2312");
%>
<p><%=username%></p>
<a href="<%=request.getRequestURL()%>?username=<%=URLEncoder.encode("为什么不能显示中文")%>">click</a>
public class MyAscii
{
public static String toTureAsciiStr(String str){
StringBuffer sb = new StringBuffer();
byte[] bt = str.getBytes();
for(int i =0 ;i<bt.length;i++){
if(bt[i]<0){
sb.append((char)(bt[i]&0x7f));
}else{
sb.append((char)0);
sb.append((char)bt[i]);
}
}
return sb.toString();
}
public static String unToTrueAsciiStr(String str){
byte[] bt = str.getBytes();
int i,l=0,length = bt.length,j=0;
for(i = 0;i<length;i++){
if(bt[i] == 0){
l++;
}
}
byte []bt2 = new byte[length-l];
for(i =0 ;i<length;i++){
if(bt[i] == 0){
i++;
bt2[j] = bt[i];
}
else{
bt2[j] = (byte)(bt[i]|0x80);
}
j++;
}
String tt = new String(bt2);
return tt;
}
}把
response.sendRedirect("error.jsp?errmsg="+URLDecoder.decode("为什么不能显示中文"));
换成:
response.sendRedirect("error.jsp?errmsg="+MyAscii.toTureAsciiStr("为什么不能显示中文")); String errmsg=URLDecoder.decode(request.getParameter("errmsg"));
换成:
String errmsg=MyAscii.unToTrueAsciiStr(request.getParameter("errmsg"));
地址栏应该是这个才对
还有类文件放哪儿呢?
//url1.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.net.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<%
String str="为什么不能显示中文";
StringBuffer sb = new StringBuffer();
byte[] bt = str.getBytes();
for(int i =0 ;i<bt.length;i++){
if(bt[i]<0){
sb.append((char)(bt[i]&0x7f));
}else{
sb.append((char)0);
sb.append((char)bt[i]);
}
}
str=sb.toString();%>
<a href="url2.jsp?username=<%=str%>">测试</a>;
<a href="url2.jsp?username=<%=URLEncoder.encode(str)%>">测试</a>;<body></body>
</html>url2.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.net.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head><body>
<%
String str=request.getParameter("username");
byte[] bt = str.getBytes();
int i,l=0,length = bt.length,j=0;
for(i = 0;i<length;i++){
if(bt[i] == 0){
l++;
}
}
byte []bt2 = new byte[length-l];
for(i =0 ;i<length;i++){
if(bt[i] == 0){
i++;
bt2[j] = bt[i];
}
else{
bt2[j] = (byte)(bt[i]|0x80);
}
j++;
}
String tt = new String(bt2);
%><%=str%><%=tt%>
<%=URLDecoder.decode(request.getParameter("username"))%>
</body>
</html>结果:
*J2C42;D\OTJ>VPND为什么不能显示中文 N*J2C42;D\OTJ>VPND
//前后是转化后的,中间是还原的.
win2000+WebLogic Server 6.1(原始安装,未改配置)