数据库中文问题总结

来源:互联网 发布:隐藏表单域 存放json 编辑:程序博客网 时间:2024/05/08 09:11

在开发项目过程中间,使用 hibernate作为数据持久化层来封装对数据库进行的操作。其中经常会碰到一些数据库的中文问题。下面对其中经常碰到的情况作一个总结。(下面的文字也参考了网上一些资料。但是出处无从考证。不好意思)

 

Mysql:

如果使用 mysql数据库,那么在配置数据库过程中间最好设置mysql的数据库编码为 utf-8,配置图如下,注意要选择中前面的单选按钮 。

hibernate连接数据库的时候,我们可以增加若干连接属性来解决问题 。下面我们可以使用下面方案来解决这个问题:

方法1:

    如果是在hibernate.properties文件中配置数据库的连接,则我们 必须在hibernate.properties文件里数据库连接url后加上?characterEncoding=gbk&useUnicode =true


方法2:

如果是在hibernate.properties文件中配置数据库的连接,我们在hibernate.cfg.xml文件的<session-factory/>块中设置
        <property name="connection.useUnicode">true</property> 
        <property name="connection.characterEncoding">UTF-8</property>
 
那么在对mysql数据库的操作中,我们一般可以解决调中文问题 。

 

Sqlserver数据库

Sqlserver的中文问题和mysql很类似。但是sqlserver的数据库在表设计的时候,我们需要注意字段的类型

解决方法:

1:要么在Java中编码,

从数据库读取数据时,遇到中文时会乱码。我们对驱除的字符串进行转码

Context=new String(congtent.getBytes(ISO8859-1, GBK);就没有问题了

 

2:要么建立数据库的时候既采用Unicode

翻阅 SQL Server 联机丛书(本人的重要工具)

得知 SQL Server 2000 支持两类字符数据类型:

Unicode 数据类型 ncharnvarchar ntext。这些数据类型使用 Unicode 字符表示法。代码页不适用于这些数据类型。

Unicode 字符数据类型 charvarchar text。这些数据类型使用单字节或双字节代码页中定义的字符表示法。

将数据库字段改为对应的 Unicode 数据类型。

           再次执行程序输出中文一切正常。

 

Oracle数据库

    好象在这个数据库下还没有碰到什么中文问题。只要注意最好使用最新的驱动程序即可ojdbc14.jar

总结

在我们进行j2ee编程的时候,中文问题分为两种情况:

1: 从客户端(ie)到服务器(servlet)。这里经常有问题问题,在服务器接受到以后就是乱吗,这个在网上有比较好的解决方法,使用过滤器是比较好的方法

2: 就是从应用服务器到数据库服务器。解决方法可以参考上面的方法。如果有遗漏的地方,敬请指正。不过千万不要将第一种中文问题的情况使用第二种办法来解决。

 
原创粉丝点击