jsp 生成静态页面 中文乱码问题

zhuhaizengyuelin 2010-11-08 11:04:18
jsp页面显示正常,采用servlet 生成静态页面以后发现 网页显示有部分中文是乱码,源代码则是全乱码,从网上找了很多种解决方案,都不见效,不知道高手如何看待这个问题
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page contentType= "text/html;charset=utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
在servlet 还写了
request.setCharacterEncoding("gb2312");
response.setContentType("text/html; charset=gb2312");
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
可是无论我换 utf-8 还是 GBk 乱码问题依旧存在, 可能是我在这里配置上出了什么差错,找了半天没有找到办法解决,在此恳求高手们指点一二!
...全文
406 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
caonimazige 2011-10-20
  • 打赏
  • 举报
回复
你右键你的jsp看一下编码格式是不是和你页面的编码格式一致。
noaso 2010-11-08
  • 打赏
  • 举报
回复
<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
noaso 2010-11-08
  • 打赏
  • 举报
回复
tomcat 的server.xml里 在配置端口那个选项里

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>

加上一个 URIEncoding
licip 2010-11-08
  • 打赏
  • 举报
回复
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
你要统一编码。

magong 2010-11-08
  • 打赏
  • 举报
回复
需要看更多代码,LZ多贴点
thy_java 2010-11-08
  • 打赏
  • 举报
回复
首先要把编码统一 tomcat 也要设 URIEncoding="utf-8
aoli444 2010-11-08
  • 打赏
  • 举报
回复
你源代码全乱码,说明你编码格式不对,将编码格式改为你源代码能正常显示的那种
potahai 2010-11-08
  • 打赏
  • 举报
回复
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page contentType= "text/html;charset=utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

都统一成UTF-8吧

还有就是创建的时候你看一下默认编码是什么 保持一致应该没什么问题
W8746988 2010-11-08
  • 打赏
  • 举报
回复
编码要一致
liuyuhua0066 2010-11-08
  • 打赏
  • 举报
回复
千万别让果子见到这个帖子,不然他又该生气了~
Asdcer 2010-11-08
  • 打赏
  • 举报
回复
web.xml中jsp-config节点中增加

<jsp-property-group>
<display-name>JSPConfiguration</display-name>
<url-pattern>*.htm</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
magong 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhuhaizengyuelin 的回复:]
java.io.BufferedReader breader = new BufferedReader(
new InputStreamReader(in, "GBK"));
String currentLine;
FileOutputStream fos = new FileOutputStream(file);
[/Quote]
你这个Servlet生成static页面后,是重定向过去的,所以乱码问题和Servlet自己的编码设置是拉不上关系的。

你读取源页面的时候用的是GBK,这样你必须确保源页面总是GBK字符编码的。
输出文件的时候,没有指定字符集,则中文操作系统默认也是GBK的。不知道这又是不是你的真实意图。
futrueing 2010-11-08
  • 打赏
  • 举报
回复
写个过滤器吧,然后搞个配置,应该没问题了,我之前都是这样搞定乱码问题的,当然你别忘记过滤器的配置要配好了,不配也是解决不了的~
zhuhaizengyuelin 2010-11-08
  • 打赏
  • 举报
回复
我把功能代码都贴出来吧
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
//----获取请求的URL
String reqTarget = request.getParameter("name");
//判断访问地址中是否包含有参数
Boolean can=false;
if(reqTarget.indexOf("?") != -1){//访问地址中有参数
can=true;
}else{
can=false;
}
//----指定对应JSP的HTML名称

String name = reqTarget.substring(reqTarget.lastIndexOf("/") + 1);
String urll="";
try {
String bsc=request.getParameter("bsc");
if(bsc!=null&&bsc!=""){
urll+="&bsc="+bsc;}
} catch (Exception e) {
// TODO: handle exception
}
try {
String ssc=request.getParameter("ssc");
if(ssc!=null&&ssc!=""){
urll+="&ssc="+ssc;}
} catch (Exception e) {
// TODO: handle exception
}
try {
String id=request.getParameter("id");
if(id!=null&&id!=""){
urll+="&id="+id;
}
} catch (Exception e) {
// TODO: handle exception
}

//访问地址修改
reqTarget+=urll;
name+=urll;//名字修改
name=name.replace(".", "a");
name=name.replace("?", "a");
name=name.replace("=", "a");
name=name.replace("&", "a");
//System.out.println(name+"二次编号");
//---判断是否存在对应的HTML文件
File file = new File(request.getRealPath("/")+"/static/" + name + ".html");
if (!file.exists()) { //--------如果不存在对应的HTML文件
try {
//System.out.println("开始打印中。。。。;");
file.createNewFile(); //--------创建HTML文件
//-------将JSP的内容写入对应的HTML文件内
InputStream in;
StringBuffer sb = new StringBuffer("");
//----注意这里,不能直接访问请求的URL,如果直接访问的话,会陷入死循环
URL url=null;
if(can){
url = new java.net.URL(reqTarget.toString()+"&type=1");
}else{
url = new java.net.URL(reqTarget.toString()+"?type=1");//计算出要访问的地址 注意死循环
}
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/4.0");
connection.connect();
in = connection.getInputStream();
java.io.BufferedReader breader = new BufferedReader(new InputStreamReader(in, "GBK"));
String currentLine;
FileOutputStream fos = new FileOutputStream(file);
while ((currentLine = breader.readLine())!=null) {
currentLine=currentLine.replace("css/", "../css/");//改变样式引用
currentLine+="\n";//换行
//currentLine=currentLine.replace("charset=UTF-8\"","charset=GB2312\"");//编码
sb.append(currentLine);
fos.write(currentLine.getBytes());
}
if (null != breader)
breader.close();
if (null != fos)
fos.close();
//---------------转到与JSP对应的HTML页
response.sendRedirect(request.getContextPath()+"/static/"+name + ".html");
} catch (Exception e) {
e.printStackTrace();
}
}else{
//----------如果存在指定的HTML,直接跳转到指定的HTML页
response.sendRedirect(request.getContextPath()+"/static/"+name + ".html");
}
}



===============一下是页面=============
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page contentType= "text/html;charset=utf-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html"
prefix="html"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
彻底解决fckeditor(jsp版)上传中文图片乱码问题,我这里用的编码是utf-8的,这里用的fckeditor 是2.6的,fckeditor.java包是2.3的,经过我修改ConnectorServlet.java和SimpleUploaderServlet.java两个文件,重新生成fckeditor-java-2.3.jar包, 要解决所有的乱码问题,有3部要修改, 1.修改Web容器的字符编码,如果Web容器用的是Tomcat,则修改conf/server.xml文件,在两个Connector中添加“URIEncoding="utf-8"”,我这里用的是utf-8编码,所以修改成utf-8,若项目是gb2312编码,则设置为“URIEncoding="gb2312"”。 2.在“浏览服务器”页面中上传文件时,打开项目WebRoot中的文件/editor/filemanager/browser/default/frmupload.html,在head中加一个meta: ,看看该文件是不是utf-8格式的,若不是,则转换成utf-8,若你用的不是utf-8则转成你用的那种编码,上面charset也设置成你用的编码 3.修改ConnectorServlet.java和SimpleUploaderServlet.java两个文件,我在这两个文件中都是加了一个静态变量encoding,private static String encoding;保存项目中的编码, 若在web.xml文件中没有给这个变量传值的话,默认是gb2312,如下代码if(encoding.isEmpty()){encoding="gb2312";},在ConnectorServlet.java的doGet与doPost的开头部分加入request.setCharacterEncoding(encoding);将请求的字符集编码设置成项目中的编码,在ConnectorServlet.java和SimpleUploaderServlet.java两个文件中的DiskFileUpload upload = new DiskFileUpload();后面加入upload.setHeaderEncoding(encoding);告诉FileUpload组件处理时的编码为项目编码,在FileItem中,用getString(encoding),这项设置可以解决获取的表单字段为乱码的问题,所以在每个FileItem实例后面都执行一次getString(encoding),就告诉FileItem在取值时用的编码是encoding所设置的编码。如在ConnectorServlet.java和SimpleUploaderServlet.java两个文件中的 FileItem item后面加上一句item.getString(encoding);在FileItem uplFile后面加上一句uplFile.getString(encoding); 接下来就是设置web.xml了,在web.xml中给上面讲到的encoding传值,如下 encoding utf-8 一切都OK了,真正的解决了上传中文名图片乱码问题。 在上面的第3步中,要用到Ant产生jar,这时要注意, 把Tomcat安装目录下/server/lib里的catalina-ant.jar复制到项目的/WEB-INF/lib下。打开build.xml,修改property name="catalina.home"成Tomcat的安装目录。修改taskdef name="deploy"、taskdef name="list"、taskdef name="reload"、taskdef name="undeploy"如下: 然后在Eclipse的Outline窗口中运行Ant的dist,就会生成的新的FCKeditor-2.3.jar。 绝对是真实的,共享出来与大家分享,少一个上传其它文件的,如RAR的,有添加过这个功能的朋友也拿出来共享下吧
JspRun!- 最棒的免费的开源Java社区软件系统 JspRun!论坛软件系统简介 论坛软件系统亦称电子公告板(BBS)系统,它伴随社区BBS的流行而成为互联网最重要的应用之一,也逐渐成为网站核心竞争力的标志性体现。2006年7月 CNNIC 发布的最新统计表明,43.2% 的中国网民经常使用论坛/BBS/讨论组,论坛社区应用首次超过即时通讯 IM ,成为仅次于收发Email的互联网基本应用。 JspRun!是飞速创想(北京)科技有限公司推出的一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上,通过简单的设置和安装,在互联网上搭建起具备完善功能、很强负载能力和可高度定制的论坛服务。JspRun! 的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。 JspRun! 开发组具有丰富的 web 应用程序设计经验,尤其在论坛产品及相关领域,经过长期创新性开发,掌握了一整套从算法,数据结构到产品安全性方面的领先技术。使得 JspRun! 无论在稳定性,负载能力,安全保障等方面都居于国内外同类产品领先地位。 2009年4月23日更新内容部分列表 修复功能 1、修复了非法请求资源 2、修复了jsp脚本在一些特殊条件下会产生一个以上的实例,造成脚本执行不同步 3、修复了jsp脚本下次执行时间错误 4、修复了上传附件数组越界,附件来路检查无效,附件下载付费功能无效,下载附件扣除积分错误 5、修复了上传附件的存放路径动态获取 6、修复了清空帖子回收站的时没有删除远程附件 7、修复了查看短消息空指针异常及关键字搜索短消息无效 8、修复了生存缓存文件截取修改时间异常 9、修复了禁止浏览器缓冲功能 10、修复了生成验证码的访问路径 11、修复了主题操作在某些条件下会出错 12、修复了个人空间显示效果,包括文集、昵称、收藏版块、主题图标等 13、修复了上传图片时如果图片是动画为该图片生成缩略图和水印图片 14、修复了在gbk项目下无法保存ftp密码的问题 15、修复了合并用户时合并短消息异常 16、修复了主题自动关闭后仍可以回复的问题 17、修复了编辑主题时缺少主题分类选项,显示信息类别的效果及不能预览远程附件服务器上的图片 18、修复了Archiver 功能在 URL 非静态化的条件下无法正常访问 19、修复了论坛会员个人设置时区无效 20、修复了jspruncode的html解析错乱,如table表格,img图片标签 21、修复了版主超版部分后台权限 22、修复了主题付费、附件付费无效的问题 23、修复了积分交易功能无效的问题 24、修复了Wap设置时的页面错误、wap查看回帖时的分页信息、wap发帖回帖乱码的问题 25、修复了新用户注册无法保存个性签名等若干bug 26、修复了三元运算符以兼容更多的web服务器(如jboss、resin等) 27、修复了广告数量不能整除时无法显示广告的问题 28、修复了“系统错误记录”无法写入的问题 29、修复了后台操作中如果 session 过期重新登陆后出现循环跳转 30、修复了恶意访问后台权限判断,个人签名过滤恶意html代码的问题 31、修复了全文检索不精确 32、修复了如果域名中多一个"/"符,后台表情搜索失效 33、修复了注册时生日输入特殊字符出错的问题 34、修复了删除会员组后计算会员组错误 35、修复了插件版权信息设置错误的问题 36、修复了用户设置界面风格后,第一次访问时界面设置无效问题 37、修复了wap发帖回帖成功后今日发帖数不变的问题以及主题浏览无分页问题 38、修复了浏览帖子时以及查看短消息内容时解析特殊字符$出错的问题 39、更多细节问题的修复 优化功能 1、优化了页面缓存类及页面缓存生成方式 2、优化减少过滤器中的sql查询语句 3、优化减少版块帖子列表sql查询语句 4、优化个人空间 5、优化验证问答 6、优化快速编辑帖子的提交方式和帖子附件下载次数 7、优化搜索的排序方式 8、升级优化序列化类 9、优化统计功能 10、优化所有页面分页功能 11、优化首页,帖子列表,帖子浏览页面,大大减少页面大小,增加浏览速度,减少服务器访问流量 12、优化thread页面解析特殊代码,避免出现死循环, 13、更多细节方面的优化 新增功能 1、增加了远程附件服务器附件下载功能,可以最大限度减轻论坛服务器负担 2、增加了注册页面可添加广告 3、增加了更改访问端口号功能 4、增加了论坛插件功能 5、增加了商品发布功能(包括财付通功能、积分充值功能及相关的论坛交易功能) 6、增加了注册时用户名中如含有'号则屏蔽该用户名
JspRun!- 最棒的免费的开源Java社区软件系统 JspRun!论坛软件系统简介 论坛软件系统亦称电子公告板(BBS)系统,它伴随社区BBS的流行而成为互联网最重要的应用之一,也逐渐成为网站核心竞争力的标志性体现。2006年7月 CNNIC 发布的最新统计表明,43.2% 的中国网民经常使用论坛/BBS/讨论组,论坛社区应用首次超过即时通讯 IM ,成为仅次于收发Email的互联网基本应用。 JspRun!是飞速创想(北京)科技有限公司推出的一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上,通过简单的设置和安装,在互联网上搭建起具备完善功能、很强负载能力和可高度定制的论坛服务。JspRun! 的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。 JspRun! 开发组具有丰富的 web 应用程序设计经验,尤其在论坛产品及相关领域,经过长期创新性开发,掌握了一整套从算法,数据结构到产品安全性方面的领先技术。使得 JspRun! 无论在稳定性,负载能力,安全保障等方面都居于国内外同类产品领先地位。 2009年4月23日更新内容部分列表 修复功能 1、修复了非法请求资源 2、修复了jsp脚本在一些特殊条件下会产生一个以上的实例,造成脚本执行不同步 3、修复了jsp脚本下次执行时间错误 4、修复了上传附件数组越界,附件来路检查无效,附件下载付费功能无效,下载附件扣除积分错误 5、修复了上传附件的存放路径动态获取 6、修复了清空帖子回收站的时没有删除远程附件 7、修复了查看短消息空指针异常及关键字搜索短消息无效 8、修复了生存缓存文件截取修改时间异常 9、修复了禁止浏览器缓冲功能 10、修复了生成验证码的访问路径 11、修复了主题操作在某些条件下会出错 12、修复了个人空间显示效果,包括文集、昵称、收藏版块、主题图标等 13、修复了上传图片时如果图片是动画为该图片生成缩略图和水印图片 14、修复了在gbk项目下无法保存ftp密码的问题 15、修复了合并用户时合并短消息异常 16、修复了主题自动关闭后仍可以回复的问题 17、修复了编辑主题时缺少主题分类选项,显示信息类别的效果及不能预览远程附件服务器上的图片 18、修复了Archiver 功能在 URL 非静态化的条件下无法正常访问 19、修复了论坛会员个人设置时区无效 20、修复了jspruncode的html解析错乱,如table表格,img图片标签 21、修复了版主超版部分后台权限 22、修复了主题付费、附件付费无效的问题 23、修复了积分交易功能无效的问题 24、修复了Wap设置时的页面错误、wap查看回帖时的分页信息、wap发帖回帖乱码的问题 25、修复了新用户注册无法保存个性签名等若干bug 26、修复了三元运算符以兼容更多的web服务器(如jboss、resin等) 27、修复了广告数量不能整除时无法显示广告的问题 28、修复了“系统错误记录”无法写入的问题 29、修复了后台操作中如果 session 过期重新登陆后出现循环跳转 30、修复了恶意访问后台权限判断,个人签名过滤恶意html代码的问题 31、修复了全文检索不精确 32、修复了如果域名中多一个"/"符,后台表情搜索失效 33、修复了注册时生日输入特殊字符出错的问题 34、修复了删除会员组后计算会员组错误 35、修复了插件版权信息设置错误的问题 36、修复了用户设置界面风格后,第一次访问时界面设置无效问题 37、修复了wap发帖回帖成功后今日发帖数不变的问题以及主题浏览无分页问题 38、修复了浏览帖子时以及查看短消息内容时解析特殊字符$出错的问题 39、更多细节问题的修复 优化功能 1、优化了页面缓存类及页面缓存生成方式 2、优化减少过滤器中的sql查询语句 3、优化减少版块帖子列表sql查询语句 4、优化个人空间 5、优化验证问答 6、优化快速编辑帖子的提交方式和帖子附件下载次数 7、优化搜索的排序方式 8、升级优化序列化类 9、优化统计功能 10、优化所有页面分页功能 11、优化首页,帖子列表,帖子浏览页面,大大减少页面大小,增加浏览速度,减少服务器访问流量 12、优化thread页面解析特殊代码,避免出现死循环, 13、更多细节方面的优化 新增功能 1、增加了远程附件服务器附件下载功能,可以最大限度减轻论坛服务器负担 2、增加了注册页面可添加广告 3、增加了更改访问端口号功能 4、增加了论坛插件功能 5、增加了商品发布功能(包括财付通功能、积分充值功能及相关的论坛交易功能) 6、增加了注册时用户名中如含有'号则屏蔽该用户名

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧