- 浏览: 167918 次
- 来自: ...
文章分类
最新评论
-
hellostory:
不知所云………………
如何使用反射访问类的private域和方法 -
xusong_zidingyi:
如果在linux下面的话就没有办法运行了,因为linux没有办 ...
使用tesseract破解checkCode -
javajava22:
Errors accessing files. There m ...
使用tesseract破解checkCode -
suncathay:
qljobs 写道cmd.add("E:/Works ...
使用tesseract破解checkCode -
zuoxu128:
TIFFImageWriteParam ,这个类是哪个包的啊
使用tesseract破解checkCode
1、中文问题的来源
计算机最初的操作系统支持的编码是单字节的字符编码,于是,在计算机中一切处理程式最初都是以单字节编码的英文为准进行处理。随着计算机的发展,为了适应 世界其他民族的语言(当然包括我们的汉字),人们提出了UNICODE编码,他采用双字节编码,兼容英文字符和其他民族的双字节字符编码,所以,目前,大 多数国际性的软件内部均采用UNICODE编码,在软件运行时,他获得本地支持系统(多数时间是操作系统)默认支持的编码格式,然后再将软件内部的 UNICODE转化为本地系统默认支持的格式显示出来。Java的JDK和JVM即是如此,我这里说的JDK是指国际版的JDK,我们大多数程式员使用的 是国际化的JDK版本,以下所有的JDK均指国际化的JDK版本。我们的汉字是双字节编码语言,为了能让计算机处理中文,我们自己制定的gb2312、 GBK、GBK2K等标准以适应计算机处理的需求。所以,大部分的操作系统为了适应我们处理中文的需求,均制定有中文操作系统,他们采用的是 GBK,GB2312编码格式以正确显示我们的汉字。如:中文Win2K默认采用的是GBK编码显示,在中文WIN2k中保存文件时默认采用的保存文件的 编码格式也是GBK的,即,所有在中文WIN2K中保存的文件他的内部编码默认均采用GBK编码,注意:GBK是在GB2312基础上扩充来的。
由于Java语言内部采用UNICODE编码,所以在JAVA程式运行时,就存在着一个从UNICODE编码和对应的操作系统及浏览器支持的编码格式转换 输入、输出的问题,这个转换过程有着一系列的步骤,如果其中所有一步出错,则显示出来的汉字就会出是乱码,这就是我们常见的JAVA中文问题。
同时,Java是个跨平台的编程语言,也即我们编写的程式不仅能在中文windows上运行,也能在中文Linux等系统上运行,同时也需求能在英文等系 统上运行(我们经常看到有人把在中文win2k上编写的JAVA程式,移植到英文Linux上运行)。这种移植操作也会带来中文问题。
更有,有人使用英文的操作系统和英文的IE等浏览器,来运行带中文字符的程式和浏览中文网页,他们本身就不支持中文,也会带来中文问题。
几乎所有的浏览器默认在传递参数时都是以UTF-8编码格式来传递,而不是按中文编码传递,所以,传递中文参数时也会有问题,从而带来乱码现象。
总之,以上几个方面是JAVA中的中文问题的主要来源,我们把以上原因造成的程式不能正确运行而产生的问题称作:JAVA中文问题。
2、JAVA编码转换的周详过程
我们常见的JAVA程式包括以下类别:
*直接在console上运行的类(包括可视化界面的类)
*JSP代码类(注:JSP是Servlets类的变型)
*Servelets类
*EJB类
*其他不能直接运行的支持类
这些类文件中,都有可能含有中文字符串,并且我们常用前三类JAVA程式和用户直接交互,用于输出和输入字符,如:我们在JSP和Servlet中得到客 户端送来的字符,这些字符也包括中文字符。无论这些JAVA类的作用怎么,这些JAVA程式的生命周期都是这样的:
*编程人员在一定的操作系统上选择一个合适的编辑软件来实现源程式代码并以.java扩展名保存在操作系统中,例如我们在中文win2k中用记事本编辑一个java源程式;
*编程人员用JDK中的javac.exe来编译这些原始码,形成.class类(JSP文件是由容器调用JDK来编译的);
*直接运行这些类或将这些类布署到WEB容器中去运行,并输出结果。
那么,在这些过程中,JDK和JVM是怎么将这些文件怎么编码和解码并运行的呢?
这里,我们以中文win2k操作系统为例说明JAVA类是怎么来编码和被解码的。
第一步, 我们在中文win2k中用编辑软件如记事本编写一个Java源程式文件(包括以上五类JAVA 程式),程式文件在保存时默认采用了操作系统默认支持GBK编码格式(操作系统默认支持的格式为file.encoding格式)形成了一个.java文 件,也即,java程式在被编译前,我们的JAVA源程式文件是采用操作系统默认支持的file.encoding编码格式保存的,java源程式中含有 中文信息字符和英文程式代码;要查看系统的file.encoding参数,能用以下代码:
public class ShowSystemDefaultEncoding { public static void main(String[] args) { String encoding = System.getProperty("file.encoding"); System.out.println(encoding); } }
第二步, 我们用JDK的javac.exe文件编译我们的Java源程式,由于JDK是国际版的,在编 译的时候,如果我们没有用-encoding参数指定我们的JAVA源程式的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式,也 即在编译java程式时,若我们不指定源程式文件的编码格式,JDK首先获得操作系统的file.encoding参数(他保存的就是操作系统默认的编码 格式,如WIN2k,他的值为GBK),然后JDK就把我们的java源程式从file.encoding编码格式转化为JAVA内部默认的 UNICODE格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class文件是 UNICODE编码的,他暂放在内存中,紧接着,JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到 的.class文件。对我们来说,我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件,他内部包含我们源程式中的中文字符串,只 不过此时他己经由file.encoding格式转化为UNICODE格式了。
这一步中,对于JSP源程式文件是不同的,对于JSP,这个过程是这样的:即WEB容器调用JSP编译器,JSP编译器先查看JSP文件中是否设置有文件 编码格式,如果JSP文件中没有设置JSP文件的编码格式,则JSP编译器调用JDK先把JSP文件用JVM默认的字符编码格式(也即WEB容器所在的操 作系统的默认的file.encoding)转化为临时的Servlet类,然后再把他编译成UNICODE格式的class类,并保存在临时目录中。 如:在中文win2k上,WEB容器就把JSP文件从GBK编码格式转化为UNICODE格式,然后编译成临时保存的Servlet类,以响应用户的请 求。
第三步,运行第二步编译出来的类,分为三种情况:
A、 直接在console上运行的类
B、 EJB类和不能直接运行的支持类(如JavaBean类)
C、
JSP代码和Servlet类
D、
JAVA程式和数据库之间
下面我们分这四种情况来看。
A、直接在console上运行的类
这种情况,运行该类首先需要JVM支持,即操作系统中必须安装有JRE。运行过程是这样的:首先java启动JVM,此时JVM读出操作系统中保存的 class文件并把内容读入内存中,此时内存中为UNICODE格式的class类,然后JVM运行他,如果此时此类需要接收用户输入,则类会默认用 file.encoding编码格式对用户输入的串进行编码并转化为unicode保存入内存(用户能设置输入流的编码格式)。程式运行后,产生的字符串 (UNICODE编码的)再回交给JVM,最后JRE把此字符串再转化为file.encoding格式(用户能设置输出流的编码格式)传递给操作系统显 示接口并输出到界面上。
对于这种直接在console上运行的类,他的转化过程可用图1更加明确的表示出来:
图1
以上每一步的转化都需要正确的编码格式转化,才能最终不出现乱码现象。
B、EJB类和不能直接运行的支持类(如JavaBean类)
由于EJB类和不能直接运行的支持类,他们一般不和用户直接交互输入和输出,他们常常和其他的类进行交互输入和输出,所以他们在第二步被编译后,就形成了
内容是UNICODE编码的类保存在操作系统中了,以后只要他和其他的类之间的交互在参数传递过程中没有丢失,则他就会正确的运行。
这种EJB类和不能直接运行的支持类,
他的转化过程可用图2更加明确的表示出来:
图2
C、JSP代码和Servlet类
经过第二步后,JSP文件也被转化为Servlets类文件,只不过他不像标准的Servlets一校存在于classes目录中,他存在于WEB容器的临时目录中,故这一步中我们也把他做为Servlets来看。
对于Servlets,客户端请求他时,WEB容器调用他的JVM来运行Servlet,首先,JVM把Servlet的class类从系统中读出并装入 内存中,内存中是以UNICODE编码的Servlet类的代码,然后JVM在内存中运行该Servlet类,如果Servlet在运行的过程中,需要接 受从客户端传来的字符如:表单输入的值和URL中传入的值,此时如果程式中没有设定接受参数时采用的编码格式,则WEB容器会默认采用ISO- 8859-1编码格式来接受传入的值并在JVM中转化为UNICODE格式的保存在WEB容器的内存中。Servlet运行后生成输出,输出的字符串是 UNICODE格式的,紧接着,容器将Servlet运行产生的UNICODE格式的串(如html语法,用户输出的串等)直接发送到客户端浏览器上并输 出给用户,如果此时指定了发送时输出的编码格式,则按指定的编码格式输出到浏览器上,如果没有指定,则默认按ISO-8859-1编码发送到客户的浏览器 上。这种JSP代码和Servlet类,他的转化过程可用图3更加明确地表示出来:
图3
D、Java程式和数据库之间
对于几乎所有数据库的JDBC驱动程式,默认的在JAVA程式和数据库之间传递数据都是以ISO-8859-1为默认编码格式的,所以,我们的程式在向数
据库内存储包含中文的数据时,JDBC首先是把程式内部的UNICODE编码格式的数据转化为ISO-8859-1的格式,然后传递到数据库中,在数据库
保存数据时,他默认即以ISO-8859-1保存,所以,这是为什么我们常常在数据库中读出的中文数据是乱码。
对于JAVA程式和数据库之间的数据传递,我们能用图4清晰地表示出来
图4
3、分析常见的JAVA中文问题几个必须清晰的原则
首先,经过上面的周详分析,我们能清晰地看到,所有JAVA程式的生命期中,其编码转换的关键过程是在于:最初编译成class文件的转码和最终向用户输出的转码过程。
其次,我们必须了解JAVA在编译时支持的、常用的编码格式有以下几种:
*ISO-8859-1,8-bit,
同8859_1,ISO-8859-1,ISO_8859_1等编码
*Cp1252,美国英语编码,同ANSI标准编码
*UTF-8,同unicode编码
*GB2312,同gb2312-80,gb2312-1980等编码
*GBK
,
同MS936,他是gb2312的扩充
及其他的编码,如韩文、日文、繁体中文等。同时,我们要注意这些编码间的兼容关体系如下:
unicode和UTF-8编码是一一对应的关系。GB2312能认为是GBK的子集,即GBK编码是在gb2312上扩展来的。同时,GBK编码包含了
20902个汉字,编码范围为:0x8140-0xfefe,所有的字符能一一对应到UNICODE2.0中来。
再次,对于放在操作系统中的.java源程式文件,在编译时,我们能指定他内容的编码格式,具体来说用-encoding来指定。注意:如果源程式中含有
中文字符,而你用-encoding指定为其他的编码字符,显然是要出错的。用-encoding指定源文件的编码方式为GBK或gb2312,无论我们
在什么系统上编译含有中文字符的JAVA源程式都不会有问题,他都会正确地将中文转化为UNICODE存储在class文件中。
然后,我们必须清晰,几乎所有的WEB容器在其内部默认的字符编码格式都是以ISO-8859-1为默认值的,同时,几乎所有的浏览器在传递参数时都是默
认以UTF-8的方式来传递参数的。所以,虽然我们的Java源文件在出入口的地方指定了正确的编码方式,但其在容器内部运行时还是以ISO-
8859-1来处理的。
4、 具体解决办法如下:
A、
针对直接在console上运行的类
对于这种情况,我们建议在程式编写时,如果需要从用户端接收用户的可能含有中文的输入或含有中文的输出,程式中应该采用字符流来处理输入和输出,具体来说,应用以下面向字符型节点流类型:
对文件:FileReader,FileWrieter
其字节型节点流类型为:FileInputStream,FileOutputStream
对内存(数组):CharArrayReader,CharArrayWriter
其字节型节点流类型为:ByteArrayInputStream,ByteArrayOutputStream
对内存(字符串):StringReader,StringWriter
对管道:PipedReader,PipedWriter
其字节型节点流类型为:PipedInputStream,PipedOutputStream
同时,应该用以下面向字符型处理流来处理输入和输出:
BufferedWriter,BufferedReader
其字节型的处理流为:BufferedInputeStream,BufferedOutputStream
InputStreamReader,OutputStreamWriter
其字节型的处理流为:DataInputStream,DataOutputStream
其中InputStreamReader和InputStreamWriter用于将字节流按照指定的字符编码集转换到字符流,如:
InputStreamReader
in = new InputStreamReader(System.in,"GB2312");
OutputStreamWriter out = new
OutputStreamWriter (System.out,"GB2312");
例如:采用如下的示例JAVA编码就达到了需求:
import java.io.*; public class Read { public static void main(String[] args) throws IOException { String str = "\n中文测试,这是内部硬编码的串"+"\ntest english character"; String strin= ""; BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in,"gb2312")); //设置输入接口按中文编码 BufferedWriter stdout = new BufferedWriter(new OutputStreamWriter(System.out,"gb2312")); //设置输出接口按中文编码 stdout.write("请输入:"); stdout.flush(); strin = stdin.readLine(); stdout.write("这是从用户输入的串:"+strin); stdout.write(str); stdout.flush(); } }
同时,在编译程式时,我们用以下方式来进行:
javac
-encoding gb2312 Read.java
其运行结果如图5所示:
图5
B、 针对EJB类和不能直接运行的支持类(如JavaBean类)
由于这种类他们本身被其他的类调用,不直接和用户交互,故对这种类来说,我们的建议的处理方式是内部程式中应该采用字符流来处理程式内部的中文字符串(具 体如上面一节中相同),同时,在编译类时用-encoding gb2312参数指示源文件是中文格式编码的即可。
C、 针对Servlet类
针对Servlet,我们建议用以下方法:
在编译Servlet类的源程式时,用-encoding指定编码为GBK或GB2312,且在向用户输出时的编码部分用response对象的 setContentType("text/html;charset=GBK");或gb2312来设置输出编码格式,同样在接收用户输入时,我们用 request.setCharacterEncoding("GB2312");这样无论我们的servlet类移植到什么操作系统中,只有客户端的浏 览器支持中文显示,就能正确显示。如下是个正确的示例:
//HelloWorld.java package hello; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void init() throws ServletException { } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { request.setCharacterEncoding("GB2312"); //设置输入编码格式 response.setContentType("text/html;charset=GB2312"); //设置输出编码格式 PrintWriter out = response.getWriter(); //建议使用PrintWriter输出 out.println("<hr>"); out.println("Hello World! This is created by Servlet!测试中文!"); out.println("<hr>"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { request.setCharacterEncoding("GB2312"); //设置输入编码格式 response.setContentType("text/html;charset=GB2312"); //设置输出编码格式 String name = request.getParameter("name"); String id = request.getParameter("id"); if(name==null) name=""; if(id==null) id=""; PrintWriter out = response.getWriter(); //建议使用PrintWriter输出 out.println("<hr>"); out.println("你传入的中文字串是:" + name); out.println("<hr>你输入的id是:" + id); out.println("<hr>"); } public void destroy() { } }
请用javac -encoding gb2312
HelloWorld.java来编译此程式。
测试此Servlet的程式如下所示:
<%@page contentType="text/html; charset=gb2312"%> <%request.setCharacterEncoding("GB2312");%> <html><head><title></title> <Script language="JavaScript"> function Submit() { //通过URL传递中文字符串值给Servlet document.base.action = "./HelloWorld?name=中文"; document.base.method = "POST"; document.base.submit(); } </Script> </head> <body bgcolor="#FFFFFF" text="#000000" topmargin="5"> <form name="base" method = "POST" target="_self"> <input name="id" type="text" value="" size="30"> <a href = "JavaScript:Submit()">传给Servlet</a> </form> </body> </html>
其运行结果如图6所示:
图6
D、 JAVA程式和数据库之间
为避免JAVA程式和数据库之间数据传递出现乱码现象,我们建议采用以下最优方法来处理:
1、
对于JAVA程式的处理方法按我们指定的方法处理。
2、 把数据库默认支持的编码格式改为GBK或GB2312的。
如:在mysql中,我们能在设置文件my.ini中加入以下语句实现:
在[mysqld]区增加:
default-character-set=gbk
并增加:
[client]
default-character-set=gbk
在SQL
Server2K中,我们能将数据库默认的语言设置为Simplified Chinese来达到目的。
E、 针对JSP代码
由于JSP是在运行时,由WEB容器进行动态编译的,如果我们没有指定JSP源文件的编码格式,则JSP编译器会获得服务器操作系统的 file.encoding值来对JSP文件编译的,他在移植时最容易出问题,如在中文win2k中能非常好运行的jsp文件拿到英文linux中就不 行,尽管客户端都是相同的,那是因为容器在编译JSP文件时获取的操作系统的编码不同造成的(在中文wink中的file.encoding和在英文 Linux中file.encoding是不同的,且英文Linux的file.encoding对中文不支持,所以编译出来的JSP类就会有问题)。网 络上讨论的大多数是此类问题,多是因为JSP文件移植平台时不能正确显示的问题,对于这类问题,我们了解了JAVA中程式编码转换的原理,解决起来就容易 多了。我们建议的解决办法如下:
1、我们要确保JSP向客户端输出时是采用中文编码方式输出的,即无论怎么我们首先在我们的JSP源代编中加入以下一行:
<%@page contentType="text/html;
charset=gb2312"%>
2、为了让JSP能正确获得传入的参数,我们在JSP源文件头加入下面一句:
<%request.setCharacterEncoding("GB2312");%>
3、为了让JSP编译器能正确地解码我们的含有中文字符的JSP文件,我们需要在JSP源文件中指定我们的JSP源文件的编码格式,具体来说,我们在JSP源文件头上加入下面的一句即可:
<%@page
pageEncoding="GB2312"%>或<%@page
pageEncoding="GBK"%>
这是JSP规范2.0新增加的指令。
我们建议使用此方法来解JSP文件中的中文问题,下面的代码是个正确做法的JSP文件的测试程式:
//testchinese.jsp <%@page pageEncoding="GB2312"%> <%@page contentType="text/html; charset=gb2312"%> <%request.setCharacterEncoding("GB2312");%> <% String action = request.getParameter("ACTION"); String name = ""; String str = ""; if(action!=null && action.equals("SENT")) { name = request.getParameter("name"); str = request.getParameter("str"); } %> <html> <head> <title></title> <Script language="JavaScript"> function Submit() { document.base.action = "?ACTION=SENT&str=传入的中文"; document.base.method = "POST"; document.base.submit(); } </Script> </head> <body bgcolor="#FFFFFF" text="#000000" topmargin="5"> <form name="base" method = "POST" target="_self"> <input type="text" name="name" value="" size="30"> <a href = "JavaScript:Submit()">提交</a> </form> <% if(action!=null && action.equals("SENT")) { out.println("<br>你输入的字符为:"+name); out.println("<br>你通过URL传入的字符为:"+str); } %> </body> </html>
如图7是此程式运行的结果示意图:
图7
5、总结
在上面的周详分析中,我们清晰地给出了JAVA在处理源程式过程中的周详转换过程,为我们正确解决JAVA编程中的中文问题提供了基础。同时,我们给出了认为是最优的解决JAVA中文问题的办法。
6、参考资料
1、段明辉.Java
编程技术中汉字问题的分析及解决.
http://www-900.ibm.com/developerWorks/cn/java/java_chinese/index.shtml
2、
周竞涛.关于Java中文问题的几条分析原则
http://www-900.ibm.com/developerWorks/cn/java/l-javachinese/index.shtml
转载地址:http://hi.baidu.com/zhao_gw/blog/item/7f50b28db7ec901bb31bba9d.html
发表评论
-
一些随想
2012-06-01 22:05 0需求 idea 方案 执 ... -
Redis的安装与使用
2011-10-24 20:04 1292今天看了下redis相关的东东,做个备忘。 Re ... -
Redis的安装与使用
2011-10-24 20:00 0Redis 服务端: http://cocos.iteye. ... -
GenericDAO
2011-07-31 14:49 0GenericDAO -
loadfromproperties
2011-07-31 14:48 0loadfromproperties -
resultcode
2011-07-31 14:47 0resultcode -
berkeleydb的使用
2011-10-24 20:05 1883在napoli的代码中发现这个berkeleydb,版本为3. ... -
几种简单的Load Balance方法
2011-07-31 13:44 0以下代码出自napoli (1)定义Selec ... -
参数断言工具
2011-07-31 12:58 952见代码: public final class Argume ... -
如何检测线上代码的运行情况---BTrace使用分享
2011-04-10 17:36 2087(1)你是否有时发现线上的代码运行效率不高,但却无法定位到底具 ... -
napoli和JMS,mq的一些知识
2010-11-26 21:01 01 jms和mq (1)jms activeMQ 应用 h ... -
Taglib基础知识
2010-11-26 12:41 0浅论taglib设计 : http://wenku.bai ... -
java编码问题的一些文章
2010-11-11 17:30 0http://www.iteye.com/topic/8047 ... -
URL在转码的过程中数据丢失
2010-10-25 14:52 0示例代码 import java.io.Unsuppo ... -
遍历大容量map的正确方法
2010-10-08 13:20 11192首先,遍历map有以下方法: import java.uti ... -
B2B-Code Review规范
2010-08-31 10:15 01.目标 凡事知其然还要知其所以然,我们首先需要知道什么 ... -
多线程书写及code review规范
2010-08-31 10:09 14501. 不允许将Calendar用于类的静态成员 ... -
域名白名单检查
2010-08-24 21:05 0首先准备一份白名单名为safe-domain.xml ,如下: ... -
如何使用反射访问类的private域和方法
2010-08-17 21:44 5132如何使用反射访问类的private域和方法?非常简单,由 ... -
FindBugs插件的安装与使用
2010-04-21 10:54 19141 什么是FindBugs FindBugs 是一个静态分析 ...
相关推荐
这份资料包括了多个部分,通过三个MHT文件(java中文解决大全1.mht、java中文解决大全2.mht、java中文解决大全3.mht)进行详细阐述。MHT是一种单一文件格式,它包含了网页的全部内容,包括文本、图像等,方便离线...
Java 中文问题解决大全主要关注的是在Java开发中如何处理中文字符编码的问题,确保程序在不同操作系统环境下能够正确处理和显示中文。中文乱码问题通常出现在输入、输出、文件读写以及与数据库交互的过程中。以下是...
Java中文乱码问题是编程者在开发Java应用程序时经常遇到的问题,尤其是涉及到中文字符处理时。这些问题产生的根本原因在于...通过上述方法,可以最大限度地减少和解决Java中文乱码问题,提高Java程序的兼容性和稳定性。
3. 解决Java中文问题的方法 - **设置源文件编码**:使用支持设定编码的编辑器(如IDEA, Eclipse)并确保编码设置与源文件实际编码一致。 - **编译时指定编码**:使用`javac -encoding GBK yourFile.java`命令指定...
下面我们将深入探讨如何解决Java中的中文路径问题。 首先,了解Java对路径字符串的处理方式至关重要。Java使用Unicode作为内部字符编码,但操作系统(如Windows)可能使用不同的编码,如GBK或GB2312。当Java程序与...
下面将详细介绍如何解决Java中Itext PDF中文不显示的问题。 首先,我们需要理解PDF文档的编码机制。PDF文档默认使用的是Adobe的标准字体,如Helvetica或Times Roman,这些字体并不包含中文字符集。因此,当尝试在...
Java 解决中文乱码问题 Java 中文乱码问题是中国程序员无法避免的话题。乱码的出现是由于中文和英文的编码格式不同,解码也是不一样的。如果中国的程序员不会遇到乱码,那么只有使用汉语编程。Han语编程是怎么回事...
JAVA 中文乱码解决问题 JAVA 中文乱码问题是开发过程中常见的问题之一,解决这个问题需要了解乱码产生的原因,然后对症下药。下面我们对容易产生乱码问题的场景进行分析,并提出解决方案。 1. 以 POST 方法提交的...
"Java中文乱码问题解决" Java中文乱码问题是Java开发中常见的问题,尤其是在Web开发中,乱码问题会导致页面显示混乱,影响用户体验。解决乱码问题需要了解编码的基本原理和各种编码格式的区别。 编码的原因可以...
开发中前台页面向后台传参,汉字乱码,看了好多网上的方法都解决不了,所以写了一个工具类,判断是乱码就转换,不乱码就不乱换,汉字字母符号自动判断。最后完美解决汉字乱码问题。
Java中文问题及最优解决方法 由于Java编程中的中文问题是一个老生常谈的问题,在阅读了许多关于Java中文问题解决方法之后,结合作者的编程实践,我发现过去谈的许多方法都不能清晰地说明问题及解决问题,尤其是跨...
javadbf解决中文截取
总之,解决Java中的URL中文乱码问题需要理解URL编码的原理,并在客户端和服务器端采取相应的措施,确保编码和解码的一致性。无论是通过JavaScript编码、Java服务器端解码,还是调整服务器配置,关键在于确保字符集的...
JAVA解决URL路径中含有中文的问题。无论是路径中还是文件名包含中文都可以处理。经测试验证通过。
Java汉字笔画排序是一个在中文处理领域常见的需求,特别是在数据整理、信息检索或者用户界面排序等方面。本项目提供的"java汉字笔画排序2源代码jar包"是一个优化过的解决方案,旨在减少内存占用并提高排序效率。 ...
### Java解决GET请求中文乱码问题详解 在Java Web开发中,经常遇到的一个问题是处理GET请求中的中文参数时出现乱码。这个问题主要是因为浏览器发送GET请求时,参数默认使用ISO-8859-1编码格式,而服务器端通常采用...
本文将详细讲解如何使用Java生成包含中文字符的PDF文档,并解决中文乱码问题,主要涉及的库是iText库及其针对亚洲语言的支持包。 首先,iText是一个开源的Java库,用于创建和修改PDF文档。在这里我们使用的是iText ...