仓酷云

标题: JAVA网站制作之Java 关于中文乱码成绩的办理计划与履历... [打印本页]

作者: 再见西城    时间: 2015-1-18 11:53
标题: JAVA网站制作之Java 关于中文乱码成绩的办理计划与履历...
不得不提一下的是:.net是看到java红,而开发出来的工具。办理|成绩|中文|中文乱码5、我们要对Java的编译器有所懂得:
Javac?encoding
我们经常没有效到encoding这个参数。实在encoding这个参数关于跨平台的操纵是很主要的。假如没有指定encoding,则依照体系的默许encoding,gb平台上是gb2312,英文平台上是iso8859_1。Java的编译器实践上是挪用sun.tools.Javac.main的类,对文件举行编译,这个类有compile函数两头有一个encoding的变量,-encoding的参数实在间接传给encoding变量。编译器就是依据这个变量来读取Java文件的,然后把用utf-8情势编译成class文件。例子代码:

Stringstr="你";
FileWriterwriter=newFileWriter("text.txt");
write.write(str);
writer.close();

假如用gb2312编译,你会找到e4bda0的字段;
假如用8859_1编译,00c400e3的二进制:
0000,0000,1100,0100,0000,0000,1110,0011
由于每一个字符都年夜于7位,因而用11位编码:
1100,0001,1000,0100,1100,0011,1010,0011
c1--84-- c3-- a3
你会找到c184c3a3

可是我们常常疏忽失落这个参数,因而如许常常会有跨平台的成绩:

样例代码在中文平台上编译,天生zhclass

样例代码在英文平台上编译,输入enclass

(1)zhclass在中文平台上实行ok,可是在英文平台上不可

(2)enclass在英文平台上实行ok,可是在中文平台上不可

缘故原由是:

(1)在中文平台上编译后,实在str在运转态的char[]是0x4f60, 在中文平台上运转,filewriter的缺省编码是gb2312,因而chartobyteconverter会主动用挪用gb2312的converter,把str转化成byte输出到fileoutputstream中,因而0xc4,0xe3放进了文件。可是假如是在英文平台下,chartobyteconverter的缺省值是8859_1,filewriter会主动挪用8859_1往转化str,可是他没法注释,因而他会输入"?"

(2)在英文平台上编译后,实在str在运转态的char[]是0x00c40x00e3,在中文平台上运转,中文没法辨认,因而会呈现??;在英文平台上,0x00c4-->0xc4,0x00e3->0xe3,因而0xc4,0xe3被放进了文件。

6、别的缘故原由:

<%@pagecontentType="text/html;charset=GBK"%>

设置扫瞄器的显现编码,假如response的数据是utf8编码,显现将是乱码,可是乱码和上述缘故原由还纷歧样。

7、产生编码的中央:

1.从数据库到Java程序byte??〉char

2.从Java程序到数据库char??〉byte

3.从文件到Java程序byte??〉char

4.从Java程序到文件char??〉byte

5.从Java程序到页面显现char??〉byte

6.从页面form提交数据到Java程序byte??〉char

7.从流到Java程序byte??〉char

8.从Java程序到流char??〉byte

可使用设置过滤器的办法办理中文乱码的:


<web-app>
<filter>
<filter-name>RequestFilter</filter-name>
<filter-class>net.golden.uirs.util.RequestFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>RequestFilter</filter-name>
<url-pattern>*.Jsp</url-pattern>
</filter-mapping>
</web-app>


publicvoiddoFilter(ServletRequestreq,ServletResponseres,
FilterChainfChain)throwsIOException,ServletException{
HttpServletRequestrequest=(HttpServletRequest)req;
HttpServletResponseresponse=(HttpServletResponse)res;
HttpSessionsession=request.getSession();
StringuserId=(String)session.getAttribute("userid");
req.setCharacterEncoding(this.filterConfig.getInitParameter("charset"));
//设置字符集?
实践上是设置了byte??〉char的encoding
try{
if(userId==null||userId.equals("")){
if(!request.getRequestURL().toString().matches(
".*/uirs/logon/logon(Controller){0,1}x2EJsp$")){
session.invalidate();
response.sendRedirect(request.getContextPath()+
"/uirs/logon/logon.Jsp");
}
}
else{
//看看是不是具有信息上报体系的权限
if(!net.golden.uirs.util.UirsChecker.check(userId,"信息上报体系",
net.golden.uirs.util.UirsChecker.ACTION_DO)){
if(!request.getRequestURL().toString().matches(
".*/uirs/logon/logon(Controller){0,1}x2EJsp$")){
response.sendRedirect(request.getContextPath()+
"/uirs/logon/logonController.Jsp");
}
}
}
}
catch(Exceptionex){
response.sendRedirect(request.getContextPath()+
"/uirs/logon/logon.Jsp");
}
fChain.doFilter(req,res);
}

但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是netbeans,谢谢。
作者: 莫相离    时间: 2015-1-21 16:42
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
作者: 蒙在股里    时间: 2015-1-21 16:42
Java 编程语言的风格十分接近C、C++语言。
作者: 不帅    时间: 2015-1-26 08:55
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者: 因胸联盟    时间: 2015-1-26 22:42
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: admin    时间: 2015-1-29 07:03
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 分手快乐    时间: 2015-1-30 07:30
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 小魔女    时间: 2015-2-15 19:52
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者: 透明    时间: 2015-2-15 21:52
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 灵魂腐蚀    时间: 2015-3-4 05:01
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 山那边是海    时间: 2015-3-11 17:16
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
作者: 愤怒的大鸟    时间: 2015-3-14 16:16
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
作者: 海妖    时间: 2015-3-15 19:06
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 金色的骷髅    时间: 2015-3-17 09:10
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
作者: 老尸    时间: 2015-3-24 05:15
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
作者: 若天明    时间: 2015-3-25 14:49
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: 小女巫    时间: 2015-3-31 03:45
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 再见西城    时间: 2015-4-9 16:51
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 第二个灵魂    时间: 2015-4-10 05:16
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者: 柔情似水    时间: 2015-5-1 01:53
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2