MyException - 我的异常网
当前位置:我的异常网» Java Web开发 » 关于字符编码与解码的几个小问题,希望大家一起讨论

关于字符编码与解码的几个小问题,希望大家一起讨论(7)

www.MyException.Cn  网友分享于:2015-08-27  浏览:29次


你出错的地方在于String(s.getBytes("GBK"), "UTF-8");并不是把string的编码方式改变了,Java内部String的编码方式是永远不会变的,你指定的字符集、或编码方式只是改变其内部字符串输出到外部字节流或从外部字节流读取时候的行为。
------解决方案--------------------
sf?
------解决方案--------------------
up
------解决方案--------------------
这么多人都在说自己的看法了,其实大家说的都对,关键是能在实际的开发中灵活的运用这才是最重要的。总结下了哦!
------解决方案--------------------
我自己的解决方法:new String(request.getParameter("").getBytes("iso8859-1"),"utf-8")
前边iso8859-1那里不能动。后边utf-8可以换成gbk或gb2312,在linux下应该是utf-8,windows下应该是gb2312,不过个人建议还是改成utf-8统一一点的好。
还有一个办法就是三楼说的:在server.xml的文件里边添加上:URIEncoding="utf-8/或gb2312等",这样做后,对get方式的提交直接读出来就OK了,然后在写一个过滤器。过滤所有的页面。 写:response.setCharsetEncoding("utf-8/或gb2312等"),这个对post方式的解码有效
------解决方案--------------------
果然是搞研究的。。。
颁发你个硕士学位
------解决方案--------------------
niu 厉害厉害
------解决方案--------------------
怎么还没加分?
------解决方案--------------------

最近刚好碰到这个问题:用request.getParameter 取的的参数乱码;
之前用new String(request.getParameter("").getBytes("iso8859-1"),"utf-8") 等多种编码格式转都不成功;
js中是采用post方式提交的;提交的时候设置:objXMLHTTP.setRequestHeader("charset","utf-8");
JSP页面设置<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
web.xml设置过滤器编码格式是GBK;
发现乱的很,实在不清楚是怎么个编码过程,后面是这样解决的:
js:
name=encodeURI(name);//转为UTF-8——如果js中没有进行encodeURI编码action怎么转都无法把中文正常显示;
action:
String name =request.getParameter("name")==null ?"":request.getParameter("name");
 name =URLDecoder.decode(name, "UTF-8"); //UTF-8 反编码
------解决方案--------------------
builder it
------解决方案--------------------
这个东西,我不懂的
不好意思
------解决方案--------------------
这可真是个问题呀。。
下面是我以前163blog 上的一篇日质,希望对LZ有用,文章地址:http://xinming1558.blog.163.com/blog/edit/

第一,存文件必须以一种编码存;读文件也必须以一种编码读,如不特别设置,去系统默认的编码,中文windows为GBK编码。

从.java->.class过程是,先编写.java文件并按莫种编码方式保存,然后用javac方法编译此文件,注意如.java没按系统默认编码保存则要带encoding参数指明实际编码,否则出错,生成的.class文件存为系统默认编码。

从.jsp->.java->.class,先存为某种编码的.jsp文件,然后tomcat根据pageEncoding读取并转化为servlet存为系统默认编码,然后同上面.java->.class过程。

第二,IDE的encoding为对系统下文件打开的解码方式或保存的编码方式。特例:如果.jsp文件有<%@ page language="java" pageEncoding="UTF-8"%>,则eclipse会自动存为UTF-8方式,不管eclipse的encoding是什么,这也是eclipse的聪明之处。

第三,

pageEncoding="UTF-8"表示此文件的编码方式,必须与此文件存储方式一致(所以eclipse会首选根据它来存文件),tomcat根据这个来读此.jsp文件并编译为servlet。

contentType="text/html;charset=UTF-8"表示当浏览器得到此文件时以什么方式解码。例如:

<%@ page language="java" pageEncoding="UTF-8"%>

<%@ page contentType="text/html;charset=iso8859-1"%>

<html>

 <head>

<title>test</title>

 </head>

 <body>

我是个好人

 </body>

</html>

会产生乱码,因为存为UTF-8的文件被解码为iso8859-1,这样 如有中文肯定出乱码。

至此,页面应为:

<%@ page language="java" pageEncoding="UTF-8"%>

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

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有