关于oracle10g US7ASCII编码的问题

老猫的TOM 2010-12-04 09:54:54
先说一下情况:
客户是一家大型医院,他们有自己专门的系统,数据库为oracle10g 编码为US7ASCII模式,现在我们有自己的一套产品需要和客户的oracle10g对接(也就是传说中HIS开发),但是我在自己电脑上利用plsql访问客户的oracle10g数据库进行检索查询的时候是乱码,同时利用我们自己的产品(java+jsp)访问oracle进行数据查询时也是乱码,由于第一次做这样的东东,这方面经验比较欠缺还望高人能给予指点。谢谢了。
...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zn85600301 2010-12-07
  • 打赏
  • 举报
回复
这个你还是去数据库区问问吧
编码为US7ASCII模式 oracle编码一般默认是UTF-8
plsql 访问都是乱码 就不用拿程序去试了
由于历史的原因,早期的oracle没有中文字符集(如oracle6、oracle7、oracle7.1),但有的用户从那时起就使用数据库了, 并用US7ASCII字符集存储了中文,或是有的用户在创建数据库时,不考虑清楚,随意选择一个默认的字符集,如WE8ISO8859P1或US7ASCII,而这两个字符集都没有汉字编码,虽然有些时候选用这种字符集好象也能正常使用,但用这种字符集存储汉字信息从原则上说就是错误的,它会给数据库的使用与维护带来一系列的麻烦。正常情况下,要将汉字存入数据库,数据库字符集必须支持中文,而将数据库字符集设置为US7ASCII等单字节字符集是不合适的。US7ASCII字符集只定义了128个符号,并不支持汉字。另外,如果在SQL*PLUS中能够输入中文,操作系统缺省应该是支持中文的,但如果在NLS_LANG中的字符集设置为US7ASCII,显然也是不正确的,它没有反映客户端的实际情况。但在实际应用中汉字显示却是正确的,这主要是因为Oracle检查数据库与客户端的字符集设置是同样的,那么数据在客户与数据库之间的存取过程中将不发生任何转换,但是这实际上导致了数据库标识的字符集与实际存入的内容是不相符的。而在SELECT的过程中,Oracle同样检查发现数据库与客户端的字符集设置是相同的,所以它也将存入的内容原封不动地传送到客户端,而客户端操作系统识别出这是汉字编码所以能够正确显示。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧