CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

很奇怪的java、oracle中文问题

楼主steven_cheng(286)2003-09-01 17:39:21 在 Java / J2SE / 基础类 提问

oracle   客户端字符集:  
  在注册表中,ORACLE-->HOME0-->NLS_LANG   的值:SIMPLIFIED   CHINESE_CHINA.ZHS16GBK  
   
  oracle   服务器字符集:  
  select   userenv('language')   from   dual;  
   
  USERENV('LANGUAGE')  
  -----------------------------------------  
  SIMPLIFIED   CHINESE_CHINA.ZHS16GBK  
   
  oracle   版本:  
   
  select   banner   from   sys.v_$version;  
   
  BANNER  
  ----------------------------------------------------------------  
  Oracle8i   Enterprise   Edition   Release   8.1.6.0.0   -   Production  
  PL/SQL   Release   8.1.6.0.0   -   Production  
  CORE 8.1.6.0.0 Production  
   
  TNS   for   32-bit   Windows:   Version   8.1.6.0.0   -   Production  
  NLSRTL   Version   3.4.1.0.0   -   Production  
   
  运行环境:JBuilder   7、JDK   1.4.2-b28  
   
  测试SQL语句:  
  INSERT   INTO   TESTUSER    
  (TESTUSER_ID,TESTUSER_PASSWORD)    
  VALUES   ('中文','123456')  
   
  用PL/SQL测试,插入没有任何问题。把这个SQL语句放入JAVA程序(一个简单的不能再简单的Application),执行以后发现数据库中是乱码。我试着作了UTF-8-->GBK、ISO-8859-1-->GBK的转换,都不行。哪位高人指点迷津。 问题点数:200、回复次数:6Top

1 楼steven_cheng(286)回复于 2003-09-01 17:44:09 得分 0

补充一下:Oracle   Server的操作系统是Win2K   professionalTop

2 楼ticlej(ticlej)回复于 2003-09-01 19:14:30 得分 70

我一直使用楼主的环境开发,没发现问题啊。  
  如果是在有这个问题:  
  先确认:1。jdbc是不是适合的。  
                  2。直接写sql="insert   into   TESTUSER   values('中文','中文')"执行,如果不行则可能是jdbc驱动问题了。  
  Top

3 楼Wnyu(西门吹水II -- 单脚站在独木桥上)回复于 2003-09-01 20:06:10 得分 60

1.   我不敢肯定这句究竟是取服务器是户端的字符集。"select   userenv('language')   from   dual;"   到服务器的注册表再看一下。  
  Top

4 楼steven_cheng(286)回复于 2003-09-02 09:38:52 得分 0

to   ticlej(ticlej):  
  我也怀疑是JDBC驱动的问题,所以下载了一个8.17的最新驱动,还是不行。  
   
  to   Wnyu(已被封杀):  
  其实我的服务器和客户端在一台机器上,就是本机,开发也在这台机器上。Top

5 楼phoenix7789(火鸟)回复于 2003-09-02 11:25:22 得分 70

在写入数据库之前先把中文转化为ISO8859_1型,读出以后先转化为根本312再显示。  
   
  String   zh   =   new   String("中文".getByte("gb2312"),"iso8859_1");  
   
  然后把转化的zh插入数据库。  
   
  从数据库读出之后,先用:  
   
  String   zh   =   new   String("中文".getByte("iso8859_1"),"gb2312");  
   
  然后再显示。  
   
   
   
  --------------------------  
  让生命时刻充满着激情!  
  Top

6 楼steven_cheng(286)回复于 2003-09-03 17:39:29 得分 0

靠,我是修改别人的代码,昨天才发现原来他还把Oracle的Connection封装了,每次执行SQL的时候都作了GBK   to   ISO的转换。害我找了2、3天。冤枉死了。  
  散分!Top

相关问题

  • oracle奇怪
  • ~~~~~~~~~~~~碰到一个奇怪的java中文问题,求救~~~~~~~~~~~~~~~~~
  • JAVA 连接ORACLE时,用ResultSet.updateString更新数据出现奇怪的现象?!!!
  • 奇怪的中文问题!!!
  • oracle下的奇怪文件?
  • 奇怪的是JAVA………
  • 急!Tomcat+Oracle中文问题!
  • oracle中文乱码问题
  • oracle 支持中文吗?
  • 奇怪,textbox中中文怎么是空?

关键词

  • 中文
  • 字符集
  • 数据库
  • 服务器
  • 驱动
  • 转化
  • 执行
  • oracle
  • jdbc
  • sql

得分解答快速导航

  • 帖主:steven_cheng
  • ticlej
  • Wnyu
  • phoenix7789

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo