Java中文编码问题研究

Java中文编码问题研究

ID:46048705

大小:65.13 KB

页数:3页

时间:2019-11-20

Java中文编码问题研究_第1页
Java中文编码问题研究_第2页
Java中文编码问题研究_第3页
资源描述:

《Java中文编码问题研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java中文编码问题研究直接运行这些类或将这些类布署到WEB容器屮去运行,并输出结果。在程序运行过程中,JDK和JVM是按以下的步骤来完成编解码的过程。第一步,在中文win2k中用编辑软件如记事本编写一个Java源程序文件,程序文件在保存时默认采用了操作系统默认支持GBK编码格式(操作系统默认支持的格式为f订e.encoding格式)形成了一个.java文件,即java程序在被编译前,Java源程序文件是釆用操作系统默认支持的file,encoding编码格式保存的,java源程序中含有中文信息字符和英文程序代码。

2、第二步,用JDK的javac.exe文件编译Java源程序。山于JDK是国际版的,在编译的时候,如果没有用一encoding参数指定Ja-va源程序的编码格式,则javac.exe首先获得操作系统默认采用的编码格式。即在编译java程序时,若不指定源程序文件的编码格式,JDK首先获得操作系统的file,encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),然后JDK就把java源程序从file,encoding编码格式转化为Java内部默认的UNICODE格式放入内存中。然后,j

3、eivac把转换后的uni—code格式的文件进行编译成.class类文件,此时.class文件是U-NICODE编码的,它暂放在内存屮。紧接着,JDK将此以UNI—CODE编码的编译后的class文件保存操作系统中形成.class文件。对程序员来说,最终获得的.class文件是内容以UNICODE编码格式保存的类文件。如果JSP文件中没有设置JSP文件的编码格式,则JSP编译器调用JDK先把JSP文件用JVM默认的字符编码格式(也即WEB容器所在的操作系统的默认的file,encoding)转化为临时的Servl

4、et类,然后再编译成UNICODE格式的class类,并保存在临时文件夹中。运行编译出来的类,分为以下三种情况:(1)单机程序,运行该类首先需要JVM支持,即操作系统中必须安装有JRE。运行过程如下:首先java启动JVM,此时JVM读出操作系统中保存的class文件并把内容读入内存中,此时内存中为UNICODE格式的class类,然后JVM运行它。如果此类需要接收用户输入,则类会默认用f订e.encoding编码格式对用户输入的串进行编码并转化为unicode保存入内存(用户可以设置输入流的编码格式)。程序运行后

5、,产生的字符串(UNICODE编码的)再回交给JVM,最后JRE把此字符串再转化为f订e.encoding格式(用户可以设置输出流的编码格式)传递给操作系统显示接口并输出到界面上。以上每一步的转化都需要正确的编码格式转化,才能最终不出现乱码现象。(2)在Web服务器中运行,客户端请求它时,WEB容器调用JVM来运行Servleto首先,JVM把Servlet的class类从系统中读出并装入内存中,内存中是以UNICODE编码的Servlet类的代码,然后JVM在内存中运行该Servlet类,如果Servlet在运行

6、的过程中需要接受从客户端传来的字符,如表单输入的值和URL屮传入的值,此时如果程序屮没冇设定接收参数时采用的编码格式,则WEB容器会默认釆用TSO-8859-1编码格式来接受传入的值,在JVM中转化为UNICODE格式并保存在WEB容器的内存中。Servlet运行后生成输出,输出的字符串是UNICODE格式的,WEB容器将Servlet运行产生的UNICODE格式的串(如html语法,用户输出的串等)直接发送到客户端浏览器上并输出给用户。如果指定了发送时输出的编码格式,则按指定的编码格式输出到浏览器上,如果没有指定

7、,则默认按ISO—8859—1编码发送到客户的浏览器上。另外,对于数据库的JDBC驱动程序,默认在Java程序和数据库之间传递的数据都是以TSO-8859-1为默认编码格式的。因此,程序在向数据库内存储包含中文的数据时,JDBC首先是把程序内部的UNICODE编码格式的数据转化为ISO—8859—1格式,然后传递到数据库中,在数据库保存数据时,它默认以ISO—8859—1保存,这就是为什么常常在数据库屮读出的屮文数据是乱码的原因。3)分布式程序,对于服务端与客户端开发语言均为Java时,处理流程同第一种情况。Jav

8、a的10操作均采用的网络序(大字节序),如果服务端的字节序不是网络序而需要先进行字节序的转换,在确保字节序一致时,将数据流转换成字符串,需要采用与服务端一致的编码方式将数据流转换成字符串,这样才不会出现乱码问题。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。