首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

生产环境上 数据库乱码

2013-03-25 
生产环境下 数据库乱码背景:数据库的client,connection等编码都是latin1,表的编码是utf-8.开发环境是eclip

生产环境下 数据库乱码
背景:
数据库的client,connection等编码都是latin1,表的编码是utf-8.
开发环境是eclipse,默认编码是utf8.
这种方式下在linux命令行下获取中文数据正常,但是java的jdbc获取数据是乱码。(以前是用c获取的数据,现在要改成java获取数据)


在java的jdbc中假设获取数据sql 为select field from table ;乱码
可以修改sql语句为
select convert(unhex(hex(convert(field  using latin1))) using utf8) as content from table;
这样就可以正常显示。
同样如果你的生产库也是乱码同样可以用这个方法获取正常编码。(编码方式根据生产库修改)。

好,第一步解决了。可问题是,我们这的库很多,而且还是分布式的,并且字段也很多。不可能在写sql的时候每个字段都加上这个转化器。所以可否将这个转化放到java中。


于是从网上找来了字符串转化为16进制以及16进制转化为字符串方法:

百姓身边:北京市出台全国首个职工发展五年规划,明确提出反对任何形式的就业歧视,有关编制内外同工不同酬造成的不公平现象,有望3年内得到遏制.百姓身边:北京市出???全国首个???工???展五年规划,明确???出???对任何形??的就业歧视,有关编制内外???工?????酬造??的??公平现象,有望3年内得到???制.


根据上面的情况进行转化吧。
结果还算乐观,但是由于编码的有些位缺失,所以还是有部分乱码。所以下一步就是看那种编码能更全面的包括所以字符。

热点排行