`
djsl6071
  • 浏览: 603186 次
  • 性别: 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得数据库连接方式。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
分享到:
评论

相关推荐

    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笔试zz.

    在技术面试中,编程知识的考察自然是核心内容,但企业也越来越注重求职者所具备的软技能,尤其是逻辑推理、决策分析与问题解决等能力。阿里巴巴的Java笔试题尤为注重这一点,即使部分题目与直接的编程技能无直接关联...

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

    在“studyjava-zz”项目中包含的66个偏好设置文件,可能是为了给用户提供更好的使用体验,通过配置文件保存用户的设置,使得用户在使用项目时能够感觉到更为便利和贴心。 Markdown文档被广泛用于编写文档和说明,在...

    聊天工具的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. **转换编码**:一旦识别出文件的编码...

    springboot-基于java的招聘求职系统-886zz792.zip

    在描述部分,“springboot-基于java的招聘求职系统_886zz792.zip”再次强调了这是一个使用Spring Boot开发的招聘求职系统,文件名中的“886zz792”可能是一个项目或版本的编号。 标签“毕业设计”表明这个项目可能...

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

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

    java中四个核心思想

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

    java实现logistic回归算法

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

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

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

    ZZ_MODIFIED_GEEBINF.ENS.zip

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

    基于java的招聘求职系统_886zz792.zip

    基于Java的招聘求职系统是专为满足用户在招聘和求职过程中的需求而设计开发的,它采用Spring Boot框架,这是一种流行的Java开发框架,具有轻量级、快速开发、易于搭建项目等特点。该系统提供了一个便捷的平台,让...

    zz牌类小游戏24点

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

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

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

    (zz)java集合类总结

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

    基于java的招聘求职系统-886zz792.zip

    基于Java的招聘求职系统是一项专门针对求职者和招聘单位之间的信息对接而设计的软件解决方案。该系统运用Java编程语言作为后端开发的主要技术,借助Spring Boot框架进行快速开发,提供了一个高效、便捷的招聘求职...

    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应用中。其核心功能...

Global site tag (gtag.js) - Google Analytics