`
ol_beta
  • 浏览: 282691 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Java 乱码总结

    博客分类:
  • java
阅读更多

1.URL乱码

有的是,不可避免要在URL上传中文,用一些框架(spring MVC,struts)可以解决。但是我们也可以自己手动解决。

String url = "http://www.softbeta.iteye.com?name=小武";
// url编码
url = "http://www.softbeta.iteye.com?name=" + java.net.URLEncoder.encode("小武");
System.out.println("url:" + url);
 // url解码
url = "http://www.softbeta.iteye.com?name=" + java.net.URLDecoder.decode("小武");
System.out.println("url:" + url);

encode(String s) 和 decode(String s)方法会采用系统的默认编码,已标记为@deprecated 取代为带编码的方法encode(String s, String enc),decode(String s, String enc)。 

String url = "http://www.softbeta.iteye.com?name=小武";
// url编码
url = "http://www.softbeta.iteye.com?name=" + java.net.URLEncoder.encode("小武","utf-8");
System.out.println("url:" + url);
// url解码
url = "http://www.softbeta.iteye.com?name=" + java.net.URLDecoder.decode("小武","utf-8");
System.out.println("url:" + url);

 url encode和decode在前端js也有很好的支持,这样能方便我们处理请求和响应。

2.JSP乱码

在基于框架开发中,JSP乱码基本上由框架解决,但是有些地方我们的编码需要统一。

在JSP文件头,一般加入:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

charset=UTF-8的作用是指定JSP向客户端输出的编码方式为"UTF-8";

pageEncoding="UTF-8",为了让JSP引擎能正确地解码含有中文字符的JSP页面;

如果对请求编码:

request.setCharacterEncoding("UTF-8");

 还有一种是在web容器中设置编码。如Tomcat,如果上面的方法都能解决乱码,可以在server.xml修改URIEncoding:

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

3.打包文件(zip)乱码 

如果用原生的java.util.zip.ZipOutputStream进行文件打包,当文件名出现中文的时候,会出现乱码,目前还没有很好的解决方法,除非修改这个类的代码,然后重新打包。

org.apache.tools.zip.ZipOutputStream用这个类进行打包可以设置编码,有效的解决中文问题。

ZipOutputStream zos = new ZipOutputStream(os);
zos.setEncoding("GBK");
...
zos.flush();
zos.close();

4.其他情况通用解决

像文件乱码,数据库乱码...等,很多时候是方法没有用对,字符集设置不统一或没有用对。对文件读写,用正确的流,合适的编码,一般不会出问题。数据库也是一样,数据库的编码也后台处理程序编码要统一。但是还是有一些情况我们不能成功解决乱码问题,这是只有强制转码了。 

/**
 * 转码
 * 
 * @author oliver
 * @created 2011-10-13
 *
 * @param str 需要转码的字符串
 * @param originEncode 原字符串编码
 * @param destEncode 需要转向的编码
 * @return
 * @throws UnsupportedEncodingException
 */
public static String transcoding(String str,String originEncode,String destEncode) throws UnsupportedEncodingException{
	if(str==null || str.trim()==""){
		return str;
	}
	return new String(str.getBytes(originEncode),destEncode);
}

如果你知道乱码字符串以前用的编码,那么可以用上面的方法解决乱码。

在java.nio包中,也有类似编码解码的方法。

String name="中文";
Charset ct = Charset.forName("utf-8");
ByteBuffer encode = ct.encode(name);
name=ct.decode(encode).toString();

总之,乱码问题很多时候是由于我们的方法,工具没有选择正确,或者编码不统一。如果真的没有其他好的办法,可以自己写工具强制转码。

 

 

 

 

 

1
0
分享到:
评论

相关推荐

    关于java乱码学习的一点总结

    个人的一点关于JAVA乱码的整理。不知对大家有没有用

    Java中文乱码解决之道

    阅读许多关于中文乱码的解决办法的博文后,发现对于该问题我们都(更加包括我自己)没有一个清晰明了的认识,于是LZ想通过这系列博文(估计只有几篇)来彻底分析、解决java中文乱码问题,如有错误之处望各位同仁指出...

    linux下java生成图片乱码问题.doc

    最近在做一个java生成图片的功能,由于系统字体原因,在linux上生成出来的中文是乱码,所以在网上找了N多的资料,最终才把问题解决。很多人说把字体放到jdk安装目录下的Jre的fonts目录下,根本是无效的。且Centos6和...

    java乱码问题的解决

    当你编写代码时是不是也遇到了乱码问题 尤其是jquery post提交 来下载看看吧 你会有所收获 (个人总结 针对不同情况)

    JAVA/JSP中文乱码解决方案总结

    解决乱码的各种方法总结,包括数据库的解决方案,个人觉得比较详细有使用价值

    JAVA开发中各种中文乱码问题

    改文档详细总结了JAVA开发中的各种常见的中文乱码,比如JSP页面的中文乱码,数据库的中文乱码等。

    jsp中文乱码总结包括 ajax中文乱码

    针对java web开发方面中文乱码情况的总结,基本各种情况都有了!

    解决java所有中文乱码集合

    根据自己平时遇到的问题,以及根据资源,总结出了所有中文乱码问题,包括乱码问题的方式,分析乱码原因,以及给出几种乱码解决办法,基本上解决所有乱码问题,简单易懂,有截图。

    java,jsp,servlet 乱码

    乱码总结,其中包括java,servlet,jsp,struts2,等,属个人总结,仅提供参考

    java中常见的中文乱码总结

    本文主要介绍了java中常见的中文乱码以及解决方法,具有很好的参考价值。下面跟着小编一起来看下吧

    java解析文件乱码解决

    非常不错的资料,自己总结的东西,希望有帮助

    java web开发解决乱码问题

    解决在javaweb开发的过程中遇到的乱码问题,纯属个人在学习中的总结。

    j2ee乱码处理总结

    Java j2EE项目中,乱码问题,主要出现在三个方面: 1.中文展现的乱码问题 2.中文写入数据库乱码问题 3.参数传递的乱码问题 本文档对这三部分如何处理乱码都有详细的说明。

    多文件上传例子(解决中文乱码)

    总结中文乱码问题如下: 1、所有页面都用UTF-8。 2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 3、javascript脚本里用encodeURI(str)。 4、适当的时候,在jsp里用java.net.URLDecoder.decode(request....

    Java web工程乱码解决方案

    这里总结了我在j2ee开发过程中,中文乱码的解决方案。希望能够帮到大家!

    java中文乱码问题处理集锦

    这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享!

    Java 中文乱码

    此文档总结出了Java开发中遇到的绝大多数乱码的情况,并给出了相应的解决方法。

    web项目乱码问题 jsp乱码问题解决

    web项目中中文乱码问题总结,几解决方法。

    java重点之StringBuilder讲解

    这是java学习中,总结出来的关于StringBuilder的一些内容,供学习参考。

    WEB开发乱码处理总结

    WEB开发中总会遇到乱码,这些都是经常出现,但是很烦的问题,处理起来并不难

Global site tag (gtag.js) - Google Analytics