乱码出现的原因
java内核是unicode的。但Java总是根据操作系统的默认编码字符集来决定字符串的初始编码,而且Java系统的输入和输出的都是采取操作系统的默认编码,而数据库、文件、网络传输中的字节流……采用的编码更是各不相同。所以不可避免的就会出现烦人的乱码问题了。
解决办法
1、GB2312、GBK、Unicode(UTF8)?
从字符集的大小比较 GB2312 < GBK < UTF8,很显然,如果我们采用UTF8作为系统编码的话,是不会有错的。而且如果你要考虑国际化的话,UTF8似乎是你唯一的选择
2、开发和编译代码时指定字符集为GB2312
JBuilder和Eclipse都可以在项目属性中设置。
3、使用过滤器
java 代码
- public class EncodingFilter implements Filter{
-
- protected FilterConfig config = null;
-
- protected String encoding = null;
-
- public void init(FilterConfig filterConfig) {
-
- this.encoding = filterConfig.getInitParameter("encoding");
- this.filterConfig = filterConfig;
-
- }
-
- public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
- throws java.io.IOException, javax.servlet.ServletException{
- if (req.getCharacterEncoding() == null || !req.getCharacterEncoding().equals(encoding)){
- req.setCharacterEncoding(encoding);
- }
- chain.doFilter(req, res);
- }
-
- public void destroy() {
- this.encoding = null;
- this.filterConfig = null;
- }
- }
4.web.xml
在web.xml文件中需要描述一下过滤器:
xml 代码
- <filter>
- <filter-name>Set Character Encoding</filter-name>
- <filter-class>com.capinfo.filter.SetCharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>GB2312</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>Set Character Encoding</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
5.在JSP页面中
<!---->
注意:如果在url中传递带有中文的的数据
如:http://localhost:8088/Struts-demo/upload.do?filename=如何规划职业发展道路.pdf
那么在后台需要这么写才能得到不是乱码的"文件名".
String fileName = new String(request.getParameter("filename").getBytes("ISO-8859-1"), "GB2312");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes("GB2312"), "ISO-8859-1") + "\"");
来取得url传递过来的fileName中文参数.
分享到:
相关推荐
"sqlite3 for delphi 解决中文乱码问题"这个主题,正是针对这一问题提供了解决方案。这里我们将详细探讨SQLite3在Delphi中的应用,中文乱码的成因,以及如何通过自定义修改来解决这个问题。 首先,SQLite3是一个轻...
本文将深入探讨如何利用EditPlus插件htmlFormatter.js来解决中文乱码问题,以及在格式化HTML文件时的注意事项。 首先,我们了解下中文乱码问题的背景。在处理包含中文字符的HTML文件时,如果没有正确设置编码或者在...
本文将详细讲解如何利用过滤器来解决中文乱码问题。 1. **理解中文乱码** 中文乱码通常是因为字符编码不一致导致的。在计算机系统中,字符被编码成二进制表示,不同的编码标准(如GBK、UTF-8等)对同一字符有不同...
Java 生成 PDF 文件,解决中文乱码问题 Java 生成 PDF 文件,解决中文乱码问题是 Java 编程中常见的问题。解决这个问题的关键是正确地设置中文字体,以避免乱码问题。本文将通过一个完整的示例代码,详细讲解如何...
配置 Web.xml 解决中文乱码问题 本文主要讨论了在 Web 开发中遇到的中文乱码问题,并提供了一些解决方案。首先,需要确定中文乱码问题不是由浏览器引起的,然后讨论了 Tomcat 服务器配置和数据库 bean 配置中的一些...
在实际操作中,解决汉字乱码问题的步骤如下: 1. 卸载现有Intraweb版本:通过控制面板或第三方卸载工具,彻底卸载已安装的Intraweb组件,确保没有遗留的配置文件影响新版本的安装。 2. 安装Intraweb12:运行"iw...
Java 解决中文乱码问题 Java 中文乱码问题是中国程序员无法避免的话题。乱码的出现是由于中文和英文的编码格式不同,解码也是不一样的。如果中国的程序员不会遇到乱码,那么只有使用汉语编程。Han语编程是怎么回事...
在Linux系统中,中文乱码问题常常困扰着用户,尤其是对于那些需要处理中文文本的开发者和运维人员。...通过以上方法,一般可以有效避免和解决中文乱码问题,使得在Linux环境中处理中文文本更加顺畅。
以下是对如何在Java中解决中文乱码问题的详细解析。 ### 解决中文乱码问题的核心思路 解决中文乱码的关键在于确保字符编码的一致性。当从不同的源(如网络请求、文件读取等)获取字符串时,必须明确知道其原始编码...
jsp 用过滤器解决中文乱码问题的方法 jsp(JavaServer Pages)是一种广泛应用于Web开发的技术,但是在实际开发中,我们经常会遇到中文乱码问题。为了解决这个问题,我们可以使用jsp过滤器来实现编码设置。我今天要...
"拦截器解决中文乱码问题"这个主题,主要关注的是如何通过使用拦截器(Interceptor)这一技术手段来预防或解决乱码现象。拦截器是Spring MVC框架中的一个重要组件,它可以对HTTP请求进行预处理和后处理,从而在数据...
### MySQL + JDBC 彻底解决中文乱码问题 #### 一、引言 在使用 MySQL 数据库进行数据存储时,可能会遇到中文字符显示为乱码的问题。这种情况通常出现在数据库连接参数配置不当或数据库本身的字符集设置不正确时。...
解决方法:解决中文乱码问题的方法有两种,一种是使用POST方式,另一种是使用GET方式。 1、POST方式:在POST方式中,我们可以使用request.setCharacterEncoding("UTF-8")来指定解码方式为UTF-8。这将使服务器使用...
本文将详细探讨Java Web开发中解决中文乱码问题的策略,包括文件编码设置、页面编码控制、请求参数编码转换、过滤器应用以及GET请求特殊处理等。 #### 1. 文件编码设置 在Java Web项目中,确保所有文件(包括Java...
本篇文章将深入探讨这个问题,并提供一种彻底解决中文乱码问题的方法。 首先,我们需要理解什么是乱码。乱码通常出现在字符编码不匹配的情况下,即数据存储或传输时采用的编码格式与读取或显示时使用的编码格式不...
本文档提供了两个解决方案:方法一是使用 Putty 代替 Secure Shell Client,修改窗口 Translation 中的 Received data assumed to be in which character set 值为 UTF-8,从而解决中文乱码问题。方法二是修改 Linux...
标题 "FastReport-v4.7.22完全解决中文乱码问题" 指的是针对FastReport这款报表生成工具的一个特定版本(v4.7.22)的更新,该更新旨在解决在处理中文字符时出现的乱码问题。FastReport是一款流行的报表设计和打印...