`
djsl6071
  • 浏览: 593408 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Java中如何正确使用字体编码(zz)

阅读更多

Java中如何正确使用字体编码

 Java是目前最流行的面向对象的变成语言之一,JavaUTF8ISO88591GBK等各种字体编码,可笔者发现Java中字体编码的问

题仍困倒了不少程序员,网上虽然也有不少关于再Java中如何正确显示中文的文章,但都不够全面,笔者特意总结如下》

       影响Java中字体编码正确显示的有几个因素:1)数据库的链接方式;2)网页中使用的字体编码;3)数据库里存放数据的字体编码;4Java的缺省字体编码。入股哦在变成中遇到不能正确显示中文是,要先弄清楚以上几项所使用的字体编码,再分析找出原因,即可解决问题。

       众所周知,JSPJava的一种,和网页有关,而网页也有自己的中文编码系统,所以JSP处理中文要比纯Java的类文件更为麻烦。本文的测试数据库害死MySQL3.2,数据库链接驱动是用org.gjt.mm.mysql.Driver,这里主要讨论UTF8GBk的显示(GB2312GBK的一个子集,Java众可以使用GBK来代替GB系列)。我们先来研究JSP中字体编码问题,下面第一到第六点是针对JSP的(因为从数据库里读出中文数据与写入中文数据有所区别,咱们分别说明,前三点是从读取数据库到显示页面,后三点是从网页输入数据到存入数据库),第七到第九点针对纯Java的类文件。一下rs标识ResultSet的一个视力,是执行Select语句之后产生的数据集。

一、数据库链接方式使用UTF8

       在连接数据库的驱动后面加上这句参数useUnicode=true&characterEncoding=UTF-8,例如jdbc:mysql://localhost/DBVF?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8,从数据库里读出中文显示在使用GBkJSP的网页里,如果数据库存放的字体编码是UTF8,在JSP中使用str=new String(rs.getBytes(1),”UTF-8”)或者str=rs.getString(1),可以正确显示中文,如果数据库里存放的是GBk数据,那么JSP中也要使用str-new String(rs.getBytes(1),”GBK”) 来显示正确的中文。值得注意的是如果页面使用UTF8,数据库存放的是UTF8,也可以用str=new String(rs.getBytes(1),”GBK”)正确显示中文。如果页面是UTF8,而数据库里存放的是GBK,无法直接显示中文,需要2步转换,str=new String(rs.getBytes(1),”GBK”),str=new String(str.getBytes(“UTF-8”),”GBK”) 才可以正确显示中文。

二、数据库连接方式使用GBK

在连接数据库的驱动后面加上这句参数useUnicode=true&characterEncoding=GBK,例如jdbc:mysql://localhost/DBVF?autoReconnect=true&UseUnicode=true&characterEncoding=GBK,从数据库里读出中文,显示在使用GBKJSP的网页里,如果数据库里存放的字体编码是UTF8,在JSP中一定要使用str=new String(rs.getBytes(1),”UTF-8”),才正确显示中文。如果数据库里存放的是GBK数据,那么JSP中也要使用str=new String(rs.getBytes(1),”GBK”)或者直接使用str=rs.getString(1),即可显示正确的中文。如果页面是UTF8,而数据库里存放的是GBK,只能用str=new String(rs.getString(1).getBytes(“UTF-8”),”GBK”)的方法来显示中文;如果网页是UTF8,而数据库里存放的是UTF8,可用str=new String(rs.getBytes(1),”GBK”)或者rs.getString(1)方法来显示中文。

三、使用缺省数据库连接方式

连接数据库的驱动后面没有蛰居参数useUnicoding=&characterEncoding=,例如jdbc:mysql://localhost/DBVF?autoReconnect=true,没有参数useUnicoding=&characterEncoding,标识使用默认的ISO88591编码。

1、  从数据库里读出中文,显示在GBK的网页里。如果数据库里存放的字体编码是UTF8,在JSP网页中一定要使用语句str=new String(rs.getString(1),”UTF-8”)或者str=new String(rs.getString(1).getBytes(“ISO-8859-1”),”UTF-8”),才可以正确显示中文。如果数据库里存放的是GBK数据,那么JSP中也要使用str=new String(rs.getBytes(1),”GBK”)str=new String(rs.getString(1).getBytes(“ISO-8859-1”),”GBK”)显示正确的中文。

2、  如果网页是UTF8,不能直接正确显示GBK,需要2步骤,str=new String(rs.getBytes(1),”GBK”),str=new String(str.getBytes(“UTF-8”),”GBK”),才可以正确显示中文。如果数据库里存的是UTF8,直接用str=new String(rs.getBytes(1),”GBK”)或者str=new String(rs.getString(1).getBytes(“ISO-8859-1”,”GBK”)就可以显示中文了。

以上是读取数据库里中文正确显示在网页上,下面三点是如何正确存入数据库。

 

四、数据库连接方式很使用UTF8编码

       JSP中要把网页输入的中文存入数据库,通畅有一个提交的过程,是用str=request.getParameter(“username”),然后执行update或者insert语句来存入数据库。如何赋值给str很重要,而且这里中文输入与网页使用的字体编码有关。

1、                         网页使用UTF8,使用str=new String(request.getParameter(“username”).getBytes(“ISO-8859-1”),”UTF-8”)或者str=new String(request.getParameter(“username”).getBytes(),”UTF-8”),都可以是的存到数据库中的数据是UTF08编码。

2、                         Ww网页使用GBK,使用str=new String(request.getParameter(“username”).getBytes(),”GBK”),那么存入数据库的是UTF8编码。

3、                         值得注意的是使用UTF8的数据库连接方式不能存的GBK

 

五、数据库连接方式使用GBK编码

       1、如数使用GBK网页,存到数据库里的是GBK的方法:str=new String(request.getParameter(“username”).getBytes(“ISO-8859-1”),”GBK”),或者str=new String(request.getParameter(“username”).getBytes(),”GBK”)

       2、网页使用GBK,想存入UTF8到数据库里,要分2步:先str=new String(request.getParameter(“username”).getBytes(),”GBK”),str=new String(str.getBytes(“UTF-8”,”GBK”)即可。

       3、网页使用UTF-8,而且使用str=new String(request.getParameter(“username”).getBytes(“ISO-8859-1”),”GBK”)或者str=new String(request.getParameter(“username”).getBytes(),”UTF-8”),那么存入到数据库里的数据是UTF8编码。

       4、网页使用UTF8,而且使用str=new String(request.getParameter(“username”).getBytes(“ISO-8859-1”),”UTF-8”) ,那么存入数据库的数据是GBK编码。

 

六、数据库连接方式使用缺省,即不使用参数useUnicodecharacterEncoding

       1、网页使用GBK,如果使用str=request.getParameter(“username”)或者str=new String(request.getParameter(“username”).getBytes()),那么在数据库里的数据是GBK编码。网页使用UTF8和使用str=request.getParameter(“username”),则存入数据库是UTF8编码。

       2、如果使用str=new String(request.getParameter(“username”).getBytes(“ISO-8850-1”)),那么根据网页提供的字体编码而存到数据库,比如是UTF8的网页,那么存到数据库中的就是UTF8编码,如果使用GBK网页,那么存到数据库里的字就是GBK编码。

       3、如果使用str=new String(request.getParameter(“username”).getBytes(“UTF-8”),“UTF-8”)这一种组合能存到正确的数据外,其他存在数据库里的数据则都是乱码或者错误马。在这个UTF8组合的特例中,网页使用的是GBK,则存入数据库里就是GBK,网页使用UTF8,那么存到数据库的就是UTF8编码。

       4、网页是GBK的要存得UTF8,一定需要2步:company=new String(request.getParameter(“company”).getBytes(),”GBK”)company= new String(company.getBytes(“UTF-8”))

       5、网页是UTF8得,不能存的GBK在数据库里,一句话,改变数据库连接方式不能存得GBK码。

       以上所有得都是基于JSP网页和数据库交换数据,下面讨论一下纯JAVA编程下得字体编码转换。

 

七、数据库连接方式使用UTF8编码

       1、数据库里得中文是UTF8,可以转换位GBK,但不能把GBK存入数据库。

       2、数据库是GBK,如果转换UTF8,使用content=new String(rs.getBytes(2),”GBK”)直接将content存入数据库就可为UTF8编码。

 

八、数据库连接方式使用GBK编码

       1、数据库里得中文是UTF8,如果转换为GBK,使用content=new String(rs.getString(2).getBytes(),”GBK”)或者content=new String(rs.getString(2).getBytes()),再存入数据库即存得UTF8编码。

       2、数据库里得中文是GBK,如果转换为UTF8,使用content=new String(rs.getString(2).getBytes(“UTF-8”))或者content=new String(rs.getString(2).getBytes(“UTF-8”),”GBK”),再直接使用updateinsert语句插入到数据库,即存得UTF8

       3、如果某个StringGBK,要转化为UTF8,也是使用content=new String(GBKstr.getBytes(“UTF-8”))或者content=new String(GBKstr.getBytes(“UTF-8”),”GBK”);如果某个StringUTF8,要转换为GBK,应该使用new String(UTFstr.getBytes(“GBK”),”UTF-8”)

 

九、数据库连接使用缺省,即不使用参数

       1str2=new String(GBKstr.getBytes(“UTF-8”),”ISO-8859-1”),可以将数据库里得GBK编码转换为UTF8

       2、读取UTF8然后存入UTF8,则用str1=new String(UTFstr.getBytes(),”ISO-8859-1”)或者str1=new String(UTFstr.getBytes(“GBK”),”ISO-8859-1”)

       3、不能实现数据库里得UTF8转换为GBK

 

――――――――――――――――――――――――――――――――

如果采用UTF8得数据库连接方式或者缺省数据库连接方式,那么无法将UTF8转换为GBK;而GBK得数据库连接方式可以实现UTF8GBK得互换。建议大家使用GBK得数据库连接方式。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
分享到:
评论

相关推荐

    阿里巴巴java笔试zz.

    2. 专利意识与企业行为:此题考察的是对企业专利工作的理解,虽然不是直接的Java知识,但反映了知识产权在IT行业中的重要性。Java开发者需要了解软件版权、专利等相关法律,保护自己的创新成果。 3. 李白买酒问题:...

    base zz zz zz zz

    base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz

    基于Java与HTML的studyjava-zz设计源码,深入探索Java编程新视野

    该项目为“studyjava-zz”设计源码,深入探索Java编程新视野,共计包含549个文件,涵盖209个Java源代码文件、74个Git忽略文件、70个项目配置文件、68个classpath文件、66个偏好设置文件、25个Markdown文档、16个XML...

    聊天工具的java开发 超越QQ 天翔ZZ

    本文将深入探讨使用Java语言开发聊天工具的关键知识点,结合"天翔ZZ"这个项目,我们将分析服务器程序和客户端程序的设计与实现。 首先,Java作为跨平台的编程语言,因其强大的网络编程能力而成为开发聊天工具的理想...

    Zz: java 线程池设计思想

    本文将深入探讨Java线程池的设计原理、核心组件以及如何在实际开发中合理使用。 线程池的实现主要依赖于Java的`java.util.concurrent`包中的`ExecutorService`接口和`ThreadPoolExecutor`类。`ExecutorService`是...

    zz.rar_JAVA俄罗斯方块

    本项目“zz.rar_JAVA俄罗斯方块”提供了一套完整的JAVA源代码,让开发者可以深入理解如何用JAVA语言实现这个经典游戏。本文将详细解析该项目中的关键知识点,帮助读者更好地理解和掌握JAVA编程技巧。 1. **JAVA基础...

    字符集编码的识别(zz)

    文章可能探讨了如何识别文件的编码格式,例如通过查看文件头信息、使用专门的工具(如Notepad++、File Encoding Detector等)或编程语言中的函数(如Python的chardet库)。 4. **转换编码**:一旦识别出文件的编码...

    Aspose.cad19.5+dwg使用Java转pdf

    需要注意的是,Aspose.cad是一个商业库,虽然提供了试用版,但在商业项目中使用可能需要购买许可证。此外,转换过程可能需要消耗一定的系统资源,因此在处理大量文件或性能敏感的场景时,应考虑优化代码执行效率。 ...

    java中四个核心思想

    ### Java中的四个核心思想 Java作为一种广泛使用的编程语言,在其设计与实现中蕴含了四大核心思想,这四个核心思想不仅体现了Java的设计理念,也决定了Java程序的运行方式。接下来,我们将详细探讨这四个核心思想:...

    游程编码行程编码PPT课件.pptx

    RCL 方法的优点是可以实现高效的数据压缩,但同时也存在一些缺点,如在二值图像和连续色调图像中需要使用 Sc 作为前缀,导致效率低下。解决方法是省去 Sc,在二值图像和连续色调图像中可以广泛应用 RCL。 游程编码...

    zz牌类小游戏24点

    "zz牌类小游戏24点" 是一个基于Java编程语言开发的桌面游戏,其核心玩法是24点游戏。24点游戏是一种流行的心算游戏,玩家需要利用四张给出的扑克牌上的数字,通过加、减、乘、除运算,使得结果等于24。这个游戏旨在...

    java实现logistic回归算法

    在Java中,可以使用优化库如Apache Commons Math或OpenCV来实现这些算法。 - **损失函数**:一般使用交叉熵损失函数,对于二分类问题,损失函数为`J = -[y log(p) + (1 - y) log(1 - p)]`,其中y为真实标签,p为...

    欧母龙PLC例程源码OMRONE6CP绝对值编码器使用实例.编码器为8位格雷码输出

    - 提高稳定性:在自动化控制系统中,使用格雷码输出的编码器可以提高系统的整体稳定性和可靠性。 #### 四、OMRON E6CP绝对值编码器的应用 1. **应用场景**: - 机器人定位:在工业机器人领域,通过精确的位置...

    (zz)java集合类总结

    在Java开发中,集合类(Containers)是极其重要的组成部分,它们作为开发者日常编程不可或缺的工具,不仅让代码变得更加简洁、高效,还能显著提升程序的功能性和灵活性。本文将对Java标准类库中的集合类进行系统性的...

    ZZ_MODIFIED_GEEBINF.ENS.zip

    "ZZ_MODIFIED_GEEBINF.ENS"文件则是实际的EndNote样式文件,用户可以直接在EndNote程序中导入这个文件,以便在自己的文献库中使用。导入后,用户就可以按照这个样式格式化自己的参考文献,确保它们符合论文要求的...

    tokyo-ghoul-2017_indonesian-1688080_TOKYO_zz_

    标题中的“tokyo-ghoul-2017_indonesian-1688080_TOKYO_zz_”暗示了这是一个关于2017年动画片《东京...同时,对于字幕文件的使用,你需要确保其与播放的视频文件同步,并且在播放器中正确加载和设置字幕才能正常显示。

    java版ckfinder文件管理Demo

    这个"java版ckfinder文件管理Demo"显然是一个示例项目,用于展示如何在Java环境中使用CKFinder。 CKFinder是一个开源的文件管理器,它支持多种语言,并提供了丰富的API,可以方便地集成到各种Web应用中。其核心功能...

    ZZ561401.CAB

    ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB

    fizzbuzz_java:Java 中的 FizzBu​​zz Kata (TDD)

    在Java中,我们可以使用JUnit框架来编写测试。一个简单的测试类可能如下所示: ```java import org.junit.Test; import static org.junit.Assert.assertEquals; public class FizzBuzzTest { private FizzBuzz ...

    中医大夫助理信息系统 zz-doctor

    在“zz-doctor”项目中,我们能看到Android的四大组件——Activity、Service、BroadcastReceiver和ContentProvider的运用。Activity是用户界面的主要构成部分,Service用于后台运行任务,BroadcastReceiver处理系统...

Global site tag (gtag.js) - Google Analytics