yanmin

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  16 随笔 :: 1 文章 :: 9 评论 :: 0 Trackbacks
最近做一个项目,里面很多特殊字符,引发了一些问题,解决后很开心,特别来分享。
特殊字符:
Jörg Ranau
Sigutė Jakštonytė
Côte d'Ivoire

数据库手工导入数据

1 先检查数据库的字符集和客户端字符集是否一致。 采用的是UTF8
查看语句:
select * from nls_database_parameters

2 若是采用DOS 下的SQLPLUS 导入数据,需要set NLS_LANG=AMERICAN_AMERICA.UTF8
windows:    set NLS_LANG=AMERICAN_AMERICA.UTF8
unix:    NLS_LANG=AMERICAN_AMERICA.UTF8

3:   检查导入的数据的文件格式,格式采用: UTF8 without BOM, 
可以用NOTEPAD++, CONVER TO UTF8 without BOM
也可以用txt , 转换成UTF8.

第3点非常重要,之前忽略了,发现插入导入数据库后,数据显示不对。

验证你导入的数据是否正确可以用ORACLE DUMP 命令。
select dump(country_desc),country_desc  from tb_test  where testcode='1';
Typ=1 Len=14: 67,195,180,116,101,32,100,39,73,118,111,105,114,101        Côte d'Ivoire


数据库脚本中遇到特殊字符:
1:  单引号‘ , oracle 脚本需要写成 两个单引号
UPDATE pi_portal_nday SET ND_CTY='Côte d'‘Ivoire' WHERE ND_ID IN (152,162);

2: 特殊字符&, oracle 表示需要的参数, 若是数据中有这个有2个方法:
第1 种: set define off;

第2种:
set escape on;
然后将所有的&, 替换成/&。

3: 空行
用<br> 代替。


JAVA 代码导入数据:

要导入的数据都放在TXT 类型的文件里,通过batch job 导入数据库。 
检查导入的数据的文件格式,格式采用: UTF8 without BOM, 
可以用NOTEPAD++, CONVER TO UTF8 without BOM

java 代码:
1 读文件的时候采用 UTF8格式。

InputStreamReader read = new InputStreamReader (new FileInputStream(file),"UTF-8");
BufferedReader inBuf=new BufferedReader(read); 

2 检查所用开发工具的文件ENCODING 字符。
这个就是会为什么导致没发现 读文件错误,在开发工具中打出的LOG 欺骗了我们的眼睛。

我的开发工具BEA JAVA 文件默认ENCODING cp1252, 改成UTF8 就好了。这个特别容易忽略,当在控制台看LOG的时候,发现读过来的文件里的内容打出来都正确,就忽略了JAVA的源文件。认为是从unicode转换 utf8 有问题,特别将字符又做了处理,发现插入数据库还是不正确。 修改了ENCODING 字符字符后发现读入文件就不对了。这样轻松就解决了。 所以只要修改了读文件的时候采用 UTF8格式就可以啦。


JAVA 代码中直接赋值的或是页面录入的。
1: 页面的就很简单了,JSP 或是HTML ,里面加入字符是UTF8的就OK
2: 代码里面的,需要转换:
byte[] byteArr1 = columnValueBe.getBytes("UTF-8");
columnValue = new String(byteArr1, "UTF-8");













posted on 2011-05-20 18:29 yanmin 阅读(1977) 评论(1)  编辑  收藏

评论

# re: 关于特殊字符的一些总结 2011-05-21 07:58 jacklondon
不建议在 Java 代码中写
byte[] byteArr1 = columnValueBe.getBytes("UTF-8");
columnValue = new String(byteArr1, "UTF-8");
其实在 JDBC 连接字符串里指明编码就可以了。一般都会封装成一个公共函数。
在 Java 代码中写写转换很难看。还得每个地方写,麻烦。  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: