集算器连接 oracle 库,insert 中文乱码,请问如何解决呢?
我以前发过一个帖子,解决了 oracle 查询乱码问题, 集算器中连接 oracle 库,数据中文乱码,请问如何解决呢?
但是并没有解决 insert 乱码问题。
我想是否能设置集算器中的 jdbc 字符集,使得和数据库字符集一致才能彻底解决呢。
琢磨一天也没找到设置位置,改这个文件 raqsoftconfig.xml 中的连接参数好像也不支持。
"我以前发过一个帖子,解决了 oracle 查询乱码问题, [链接] 但是并没有解决 insert 乱码问题。 我想是否能设置集算器中的 jdbc 字符集,使得和数据库字符集一致才能彻底解决呢。 .."
我以前发过一个帖子,解决了 oracle 查询乱码问题, 集算器中连接 oracle 库,数据中文乱码,请问如何解决呢?
但是并没有解决 insert 乱码问题。
我想是否能设置集算器中的 jdbc 字符集,使得和数据库字符集一致才能彻底解决呢。
琢磨一天也没找到设置位置,改这个文件 raqsoftconfig.xml 中的连接参数好像也不支持。
在集算器下看看,insert 前,那些数据是否是乱码?
执行 insert 时,也是通过 jdbc 执行,一般来说也是走 raqsoftConfig.xml 的设置,按照之前那个帖子排查下,数据库字符集,客户端字符集,以及那个是否转码应该为 true
如果数据库端是 iso8859-1,有点奇怪,因为 is8859-1 只能表达拉丁字符,不支持中文字符
RaqsoftConfig.xml 的设置,是没有错的,因为查询出的数据已经正常了,我怀疑这个设置只是查询起作用,对 insert 不起作用。
insert 插入前的数据是不乱的,插入数据库后,再查询出来就不正常了,仅仅只是自己刚插入的数据不能正常显示,原来的数据还是能正常显示的。
我看有些资料可以设置 jdbc 连接字符集,类似如下:
jdbc:oracle:thin:@localhost:1521:orcl?useUnicode=true&characterEncoding=UTF-8
但是在 RaqsoftConfig.xml 配置文件中不能设置,也可能不知如何设置。
is8859-1 也是支持中文的,因为用 plsql 插入的中文正常。设置了 NLS_LANG 客户端字符集就可以了。
集算器中的 jdbc 如何设置呢?请高手指教。
1、iso8859-1 是单字节编码,只能表达 256 个字符,不支持中文,也可从 nchar 的字符集是 utf16( 见前贴中的图)佐证
2、为什么加上转码后读出能正确呢? 因为在插入前要先取出字符串 gbk 码的字节序列,然后当成 iso8859-1 码的字符串插入,读出时相反,但站在 db 端是不理解这个过程的
3、jdbc 本身不支持这个转码过程,不然直接用 jdbc 就能插入和读出正确的串
4、这个转码是 10 多年前报表系统为了支持用户把 oracle 的系统字符集设成 iso8859-1 而加上的,后来基本上没人提过
5、useUnicode=true&characterEncoding=UTF-8 这应该是 mysql url 的属性