java中的乱码问题

1如果使用的tomcat服务器,在server.xml中Connector 标签后加 URIEncoding="UTF-8";

2使用web过滤器:

(1)、新建一个SetCharacterEncodingFilter.java的类:

package com.util;
import java.io.IOException;
import javax.servlet.*;

public class SetCharacterEncodingFilter 
implements Filter{
 protected String encoding = null;

protected FilterConfig filterConfig =
null;

protected boolean ignore = true;

public void destroy()
 {
   
this.encoding = null;
   
this.filterConfig = null;

}

public void doFilter(ServletRequest request,
ServletResponse response,
    
FilterChain chain) throws IOException, ServletException
 {
    if (ignore
|| (request.getCharacterEncoding() == null))
    {
    
String encoding = selectEncoding(request);
    
if (encoding != null)
     
request.setCharacterEncoding(encoding);
    }
   
chain.doFilter(request, response);
 }

public void init(FilterConfig filterConfig)
throws ServletException
 {
   
this.filterConfig = filterConfig;
    //
获取初始化参数
   
this.encoding = filterConfig.getInitParameter("encoding");
    String value
= filterConfig.getInitParameter("ignore");
    if (value ==
null)
    {
    
this.ignore = true;
    } else if
(value.equalsIgnoreCase("true"))
    {
    
this.ignore = true;
    } else if
(value.equalsIgnoreCase("yes"))
    {
    
this.ignore = true;
    } else
    
this.ignore = false;
 }

protected String selectEncoding(ServletRequest
request)
 {
    return
(this.encoding);
 }

}

(2)web.xml中在web-app里加入:

<!--定义一个过滤器, 并设定其初始化参数--><filter>

<filter-name>Set Character
Encoding</filter-name>
  
<filter-class>com.util.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>

3.<%@ page language="java" import="java.util.*,com.scce.entity.*" pageEncoding="utf-8"%>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

</head>

4.String name=new String(request.getParameter("name").getBytes("ISO8859-1"),"GBK");

new String(fileName.getBytes("UTF-8"), "GBK")

5.request.setCharacterEncoding("gbk");

response.setContentType("text/html;charset=gbk");

时间: 2024-10-15 09:18:31

java中的乱码问题的相关文章

Java中关于乱码的认识和解决办法

前几天在使用中兴的MM7接口开发一个彩信的应用,可是在测试的时候,手机收到的文本内容总是一堆乱码,不管怎么修改参数问题都得不到解决,于是就狠狠的琢磨和研究了下关于编码的内容,最终成功解决了乱码的问题. 我们都知道Java语言使用的是Unicode编码.可是大家是否真的已经理解了这句话的含义? Unicode编码和我们常用的UTF-8,GBK有什么关系呢? 那接下来就来讨论下这个话题. 不知大家还有没想过,我们在Java代码里面定义一个字符串字面量的时候,该字符串在JVM中的编码是什么?  是的,

Java中调用Delphi编写的DLL

有些时候,要写一些程序,在 JAVA 里面好难实现, 但如果使用其它编程语言却又比较容易时,我们不妨通过 JNI 来让不同语言的程序共同完成. JNI 的教程, 网上 C 的比较多,Java 也提供了 javah.exe 为 C 语言的 JNI 程序生成头文件, 如果你是一个 Delphi 编程员, 能否让 JAVA 与 Delphi 程序交互呢? 答案是肯定的,今天我们就来看一下一个简单的例子. Helloworld. 主要是来认识一下, JAVA 怎样调用 Delphi 程序的方法. 好的,

java中IO及中文乱码问题

第一次发这种博客,所以一直在纠结怎么开头,干脆直奔主题吧,把自己的一些总结体会记录下来,先从简单的学习开始,希望可以慢慢坚持,以后的内容可以写的更好更有意义. 其实真正在工作中中文乱码的问题遇到的不多,那是因为公司为了开发方便所以文件都统一编码了.但是我觉得还有很有必要去稍微了解一下其原理的. IO就是输入输出流,用面向对象来理解的话,就是输入,输出流对象,主要用来操作文件对象.所以再稍微谈谈文件的概念,即File对象.在Java中,File不是我们平时生活中指的某个具体文件,而是某个路径对象,

Java中使用FileputStream导致中文乱码问题的修改方案

1 package com.pocketdigi; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStreamReader; 8 import java.io.OutputStreamWriter; 9 10 public class Main { 11

GDAL在java中乱码问题解决方案

[前序] 首先关于GDAL源码方面,GDAL开源项目源码是使用C++语言所写,通过源码的编译可以生成支持一系列语言如c++/java/php/csharp/perl/python/ruby开发所依赖的第三方包或头文件.GDAL的同时支持不同平台下的编译生成,在Win平台下使用起来出现的问题较多,比如编译时选择不同的编译选项32位或x64位产生出不同的依赖库,还有中文路径.中文读写问题等等. 在使用GDAL在java环境下进行读写数据文件时,遇到java语言读tab数据源出现乱码问题,具体的情况描

【Java】无须额外的包,把Java中的内容输出到Excel中,无乱码,绝对兼容Excel2003与2007

Java输出一段文本到txt中大家基本都会了,这已经是学习Java的必修课了,不会也没有问题,具体可以看<[Java]输入与输出与JDK1.5之后的新型字符串StringBuilder>(点击打开链接).网上对于Java内容转化成Excel的内容大多数都是需要什么poi包,jsl包,一堆奇奇怪怪的jar插件.其实仅仅利用java.io.*;这个基本包就能够把Java中的内容输出到Excel表中,当然,如果你是要处理Mysql数据库不要这样做了,直接一条Mysql的查询命令就能把Mysql的查询

Java Web项目中HTML文件中的汉字在浏览器中显示乱码的解决方案

今天在做一个Java Web项目的时候,html中的汉字在浏览器中显示为乱码,分析其可能原因有: (1)html文件属性中有默认的编码方式,如果它的设置与html文档中content charset属性设置有冲突,则显示为乱码. (2)与浏览器有关,如果html的编码方式与浏览器默认的编码方式不同,则会出现乱码. 下面直接上图,看我的实验: (1)html的文件属性和content charset都设置为UTF-8,但是浏览器默认是GBK编码,显示乱码.我用了谷歌Chrome浏览器和搜狗浏览器都

java中字符输入输出流在输出结果的结尾多一个乱码字符:&#39;?&#39;

原因以及解决方法: 核心方法如下: 1 public static void main(String[] args) throws Exception{ 2 // TODO Auto-generated method stub 3 4 FileReader fr=new FileReader("test.txt"); 5 FileWriter fw=new FileWriter("test2.txt"); 6 7 /*int b=0; 8 while(b!=-1){

java中向Mysql插入中文字符出现乱码

昨天新建了个Mysql数据库表,在JAVA中插入中文字符时,发现数据库中的插入结果是乱码.实际是字符集不符合问题. 针对这个问题的解决方法有很多,例如这个文章java与mysql乱码的问题不过我建议将表删掉重新建表,建表时默认字符集设置为UTF-8,这样可以避免以后出现各种问题. 可以通过语句show create table table_name来查看该表的编码格式.例如我的是: CREATE TABLE `blog` ( `title` varchar(30) NOT NULL DEFAUL