社区
Web 开发
帖子详情
我的JSP论坛是乱码
galaxypilot
2003-07-11 01:18:50
本人做了一个JSP论坛,刚开始是在我的单机上运行,我的配置是TOMCAT4.0.4,ACCESS,jdk 1.4.2,一切都正常,后来把这个论坛挂在一个WEB应用下面,测试时输入中文显乱码,在单独情况下运行还是正常。<%@ page contentType="text/html;charset=gb2312" %>都有。谁帮我解决马上给一百分!
...全文
23
13
打赏
收藏
我的JSP论坛是乱码
本人做了一个JSP论坛,刚开始是在我的单机上运行,我的配置是TOMCAT4.0.4,ACCESS,jdk 1.4.2,一切都正常,后来把这个论坛挂在一个WEB应用下面,测试时输入中文显乱码,在单独情况下运行还是正常。都有。谁帮我解决马上给一百分!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
galaxypilot
2003-07-11
打赏
举报
回复
大家的回贴我已经打印出来了,留着慢慢研究。问题也解决了,其原因是这样的:我们的WEB应用是用MS SQL SERVER,考虑到安全问题,我的BBS用ACCESS数据库。我把应用数据库驱动包以级JAVABEAN和我的BBS(JDBC:ODBC桥)的BEAN放在同一个WEB-INF文件夹下,所以出现上述问题,后来我把我的BBS文件夹和我的WEB应用文件夹放到同级目录(tomcat的webapps目录下)各自都有自己的WEB-INF文件夹,问题就解决了。
这样就显得有点乱,有没有什么办法把我的BBS放到我的WEB应用目录下,同时让他们的bean文件没有冲突(我认为上述问题是由冲突引起的)
贴子我晚上结!
wangyanqiu
2003-07-11
打赏
举报
回复
精辟!
freezh
2003-07-11
打赏
举报
回复
好贴
hxzhappy
2003-07-11
打赏
举报
回复
对他进行编码就可以了,转化一下,你看看这个,希望对你有帮助!
public class TransFormat {
public static String GBToUnicode(String strIn) {
String strOut2 = null;
if (strIn == null || (strIn.trim()).equals(""))
return strIn;
try {
byte[] b = strIn.getBytes("ISO8859_1");
strOut2 = new String(b, "GB2312");
} catch (Exception e) {
}
return strOut2;
}
public static String unicodeToGB(String strIn) {
byte[] b;
String strOut = null;
if (strIn == null || (strIn.trim()).equals(""))
return strIn;
try {
b = strIn.getBytes("GB2312");
strOut = new String(b, "ISO8859_1");
} catch (UnsupportedEncodingException e) {
}
return strOut;
}
}
dgnApo
2003-07-11
打赏
举报
回复
jsp里面用 request.setCharacterEncoding("gb2312");
galaxypilot
2003-07-11
打赏
举报
回复
哈哈,存入数据库中的数据也不算乱码,就是几个问题,大家给的解决办法很多,但我不知道用那个来解决我的问题更合适。
CoolAbu
2003-07-11
打赏
举报
回复
对输入的汉字进行处理再存入数据库 ;)
mingjob
2003-07-11
打赏
举报
回复
现在b.jsp只要这样就行了
----------------
<%@ page contentType="text/html;charset=GBK" %>
<%@ page import="com.zms.test2.*" %>
<html><head>
}
public static String getParameter(HttpServletRequest request,String key)
return getParameter(request,key,"ISO-8859-1","GBK");
}
}
将其编译,放入WEB-INF\classes目录下
现在b.jsp只要这样就行了
----------------
<%@ page contentType="text/html;charset=GBK" %>
<%@ page import="com.zms.test2.*" %>
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=GBK">
</head><body>
<%=Util.getParameter(request,"text")%>
</body></html>
----------------
是不是很简单,轻松解决提交时的乱码问题
zms说:提交时产成的乱码解决就是字符串编码的转换,关键是用
new String(origin.getBytes(from),to)来解决
其实读写数据库产生的乱码也可以用这种办法来解决,只要你掌握其原理,就
不会被乱码问题难倒了。
梦幻圣者
2003-07-11
打赏
举报
回复
在你的JSP页面中加一段request.setCharacterEncoding("GBK");然后解析请求数据就应该没有乱码了。
mingjob
2003-07-11
打赏
举报
回复
a.jsp
----------------
<%@ page contentType="text/html;charset=GBK" %>
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=GBK">
</head><body>
<form action="b.jsp" method=post>
<input type=text name=text><input type=submit value="提交">
</form>
</body></html>
----------------
b.jsp
----------------
<%@ page contentType="text/html;charset=GBK" %>
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=GBK">
</head><body>
<%=request.getParameter("text")%>
</body></html>
----------------
a.jsp上有个文本框,输入几个中文字,提交到b.jsp
可以看到,是乱码,但不是很乱,都是?号
其实这种乱码解决起来很简单
这是因为提交的内容是ISO-8859-1编码,只要将其转换为GBK编码就行了
修改b.jsp为如下内容
----------------
<%@ page contentType="text/html;charset=GBK" %>
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=GBK">
</head><body>
<%=new String(request.getParameter("text").getBytes("ISO-8859-1"),"GBK")%>
</body></html>
----------------
哈哈,乱码不见了
上面的解决没有考虑request.getParameter为null的情况,而且语句稍显罗嗦
我编了一个Util类,代码如下
package com.zms.test2;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
public class Util {
public static String getParameter(HttpServletRequest request,String key,
throws UnsupportedEncodingException {
String value=request.getParameter(key);
if(value==null) {
return "";
} else {
return new String(value.getBytes(from),to);
}
}
public static String getParameter(HttpServletRequest request,String key)
return getParameter(request,key,"ISO-8859-1","GBK");
}
}
将其编译,放入WEB-INF\classes目录下
mingjob
2003-07-11
打赏
举报
回复
2.修改jsp,加入两段内容,如下所示:
<%@ page contentType="text/html;charset=GBK" %>
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=GBK">
</head><body><center>
现在是:<%=new java.util.Date()%>
</center></body></html>
3.重新启动Tomcat,再浏览刚才的jsp文件,发现乱码不见了。
总结:共修改了三个地方
1.conf\web.xml中加了一个javaEncoding参数,值为GBK
2.jsp文件开头加入<%@ page contentType="text/html;charset=GBK" %>
3.html的<head></head>中加入
<meta http-equiv="Content-Type" content="text/html;charset=GBK">
注意:zms发现修改了那个javaEncoding参数后,Tomcat可能会修改你的jsp文件!?
所以在试验前要备份你web app。
zms说:总结的第三步不一定是必须的,但zms建议你总是加上。
现在jsp中的乱码解决了,Servlet还是有问题,如下显示的Servlet的doGet函数
显示还是乱码
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
out.println("<html><head></head><body>现在是:"+new java.util.Date()+"</body></ht
out.flush();
}
现在我们有了前面的经验,将其修改为如下所示,乱码问题得以解决
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
response.setContentType("text/html;charset=GBK");
out.print("<html><head>");
out.print("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=GBK\">"
out.println("</head><body>现在是:"+new java.util.Date()+"</body></html>");
out.flush();
}
现在显示乱码的问题基本解决了,但是你大概不知道,Post提交时也会产生乱码
如下面两个jsp所示:
mingjob
2003-07-11
打赏
举报
回复
转贴自SMTH BBS java版zms的帖子:
zms说:以下试验在平台Win2k server中文版+Tomcat 4.1.24上通过
你已经开始深入学习jsp和Servlet技术了,但是不久就发现了一个问题
中文总是有问题,即使是一个简单的jsp,如
<html><head></head></head><body><center>
现在是:<%=new java.util.Date()%>
</center></body></html>
其中的中文也不能正常显示。
关于乱码产生的原因,zms在这里不想多说了,只想说的一点是
在
jsp--java文件
java文件--class文件
class文件执行--产生结果
浏览器解释执行的结果
这四个转换过程中都有可能出现乱码,但据zms试验,主要问题在jsp--java
这一步,这可以从查看生成的java文件看出。Tomcat将jsp转换成servlet的
java文件在Tomcat安装目录的work目录下的相应子目录,你可以看一下。
其中浏览器解释执行也可能出现问题,但这个问题IE自己就能摆平
IE--查看--编码--简体中文(GB2312)
就行了,当然也可以程序控制的方法让IE能正确解释。
下面zms不加解释的介绍解决的步骤
1.修改Tomcat目录下conf\web.xml文件
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>logVerbosityLevel</param-name>
<param-value>WARNING</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
增加一段,如下面蓝色部分所示
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>logVerbosityLevel</param-name>
<param-value>WARNING</param-value>
</init-param>
<init-param>
<param-name>javaEncoding</param-name>
<param-value>GBK</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
galaxypilot
2003-07-11
打赏
举报
回复
在线等待,分数不够可以再加!
jsp
SmartUpload组件源代码
jsp
SmartUpload 组件 源代码,并对源代码进行了修改,使其在下载中文文件时,不会出现
乱码
。使用方法参见http://blog.sina.com.cn/s/blog_4cc16fc50100bwby.html
jsp
实现的 EXT Grid 导出excel 例子
程序是
jsp
,可以直接导入myeclipse,中文没有
乱码
问题,ie、firefox中正常导出。
JSP
中文
乱码
问题终极解决方案
在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的
JSP
中文
乱码
问题有如下几个方面:页面
乱码
、参数
乱码
、表单
乱码
、源文件
乱码
。下面来逐一解决其中的
乱码
问题。一、
JSP
页面中文
乱码
在
JSP
页面中,中文显示
乱码
有两种情况:一种是HTML中的中文
乱码
,另一种是在
JSP
中动态输出的中文
乱码
。先看一个
JSP
程序: 中文显示示例 这是一个中文显示示例: <% S
JSP
中文
乱码
问题终极解决方案(下)
本文首先从四个方面给出了在使用
JSP
过程中可能出现中文
乱码
的情形,具体包括
JSP
页面中文
乱码
、
JSP
源文件中文
乱码
、GET 请求的请求参数为中文
乱码
和 POST 请求的请求参数为中文
乱码
四种情形,并针对每种情形给出了相应的终极解决方案。
JSP
之中文
乱码
问题总结
首先,把我遇到的
乱码
问题分为三大类: 一是
JSP
页面中文
乱码
二是表单提交方式为post/get时出现
乱码
三是cookie存储输出value出现
乱码
而出现
乱码
的根本原因是:编码和解码方式不同。 一、
JSP
页面中文
乱码
首先明确一点,ISO-8859-1编码方式不识别中文。下图中,把中文字符“我是中文”用ISO-8859-1编码后载解码输出,就乱套了: 而我们采用UTF-...
Web 开发
81,092
社区成员
341,718
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章