1. 问题描述
数据库会以某种编码方式保存与读取数据,FineReport解析时默认使用GBK字符集,若数据库端编码与设计器端编码不一致时,就会导致中文及特殊字符的乱码。
FineReport在定义数据连接时可以进行编码转换,将数据库编码(数据库中数据表的编码方式)转换成我们想要的编码方式,编码中包含了基本的数据库编码,如:GBK、BIG5、ISO-8859-1、UTF-8、UTF-16、EUC-JP、EUC-KR。
2. 编码转换示例
若使用的是Oracle9i或者更低版本的,这些版本安装的时候,默认的数据库字符集是US7ASCII码,此时直接在我们的设计器里,连接数据库后会出现乱码。那我们怎么来查看数据库编码及如何设置这个编码问题呢?
定义数据库连接时将数据库编码由ISO转为GBK,乱码问题便可解决。如下:
若您不确定,您数据库的字符集编码是什么,可通过如下方式查询。Oracle数据库主要包括两种字符集编码:服务器编码和客户端编码。
· Oracle9i客户端编码
查看方法:打开数据库所在服务器的注册表(在运行窗口中输入regedit打开)HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0->NLS_LANG,查看一下数据库客户端编码是什么。
例如,有的机器上是这样的:
· 查看服务器端字符集编码
查看方法:在SQL中,查看服务器端的编码,使用SELECT * FROM V$NLS_PARAMETERS WHERE parameter LIKE '%CHARACTERSET';
PL/SQL上是这样的,如下: