`

WebSphere+Oracle乱码问题解决

阅读更多

 

环境介绍:

        Web容器(中间件):WebSphere7.0。

        Web容器所在操作系统:windows2003 sp2。

        数据库:oracle 10.2.0.1.0。

        数据库所在操作系统:Red Hat Linux5.5

 

一般的应用程序在保存数据时,存到数据库当中出现乱码,可能跟如下两个部位有关(一般两个部位都需要调整)。

 

一是数据库方面:

将WE8ISO8859P1修改为ZHS16GBK。

首先要通过SSH或其他工具连接到Oracle所在操作系统(Server端)。

登录成功后,依次执行如下命令:

 

SQL> conn /as sysdba 

Connected. 

SQL> shutdown immediate; 

Database closed. 

Database dismounted. 

ORACLE instance shut down. 

SQL> startup mount 

ORACLE instance started. 

Total System Global Area  236000356 bytes 

Fixed Size                   451684 bytes 

Variable Size             201326592 bytes 

Database Buffers           33554432 bytes 

Redo Buffers                 667648 bytes 

Database mounted. 

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; 

System altered. 

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 

System altered. 

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; 

System altered. 

SQL> alter database open; 

Database altered. 

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK; 

ALTER DATABASE CHARACTER SET ZHS16GBK 

* 

ERROR at line 1: 

ORA-12712: new character set must be a superset of old character set 

--提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:

SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 

Database altered. 

SQL> select * from v$nls_parameters; 

PARAMETER                                                        VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
NLS_LANGUAGE                                                     SIMPLIFIED CHINESE
NLS_TERRITORY                                                    CHINA
NLS_CURRENCY                                                     ¥
NLS_ISO_CURRENCY                                                 CHINA
NLS_NUMERIC_CHARACTERS                                           .,
NLS_CALENDAR                                                     GREGORIAN
NLS_DATE_FORMAT                                                  DD-MON-RR
NLS_DATE_LANGUAGE                                                SIMPLIFIED CHINESE
NLS_CHARACTERSET                                                 ZHS16GBK
NLS_SORT                                                         BINARY
NLS_TIME_FORMAT                                                  HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT                                             DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT                                               HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT                                          DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY                                                ¥
NLS_NCHAR_CHARACTERSET                                           AL16UTF16
NLS_COMP                                                         BINARY
NLS_LENGTH_SEMANTICS                                             BYTE
NLS_NCHAR_CONV_EXCP                                              FALSE

19 rows selected

-- 此时可以看到,字符集已经改好。


--重启检查是否更改完成:

SQL> shutdown immediate; 

Database closed. 

Database dismounted. 

ORACLE instance shut down. 

SQL> startup 

ORACLE instance started. 

Total System Global Area  236000356 bytes 

Fixed Size                   451684 bytes 

Variable Size             201326592 bytes 

Database Buffers           33554432 bytes 

Redo Buffers                 667648 bytes 

Database mounted. 

Database opened. 

SQL> select * from v$nls_parameters; 

略 

19 rows selected. 

 
我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验。

 

注意:如果是操作生产库,一定要慎重。最好不要动字符集。

 

 

二是在WebSphere端调整:

1.在网页控制台中修改(这个比较直观,建议使用这种,如果控制台打不开,可以看第2种方法): 

      输入用户名和密码进到WebSphere控制台,操作如下:Servers -> Server Types -> WebSphere application servers -> server1 -> Java and process Management -> Process definition -> Java Virtual Machine -> Generic JVM arguments : -Dfile.encoding=GBK -Ddefault.client.encoding=GBK

 

2.修改Server.xml文件(注意,在修改任何服务器文件时,一定要先做好备份):

server.xml路径如下:C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\config\cells\testNode01Cell\nodes\testNode01\servers\server1.xml 

 

找到文件后,定位到这个字符串 genericJvmArguments=""  修改为  genericJvmArguments="-Dfile.encoding=GBK -Ddefault.client.encoding=GBK"

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    websphere5.1应用部署

    Websphere 5.1是IBM提供的...在使用过程中,遇到问题时,可以参考IBM官方文档或在线社区寻求帮助,因为理解和解决问题是持续学习过程的一部分。希望这些信息能帮助到有需要的人,避免他们在网络资料的海洋中迷失方向。

    JDBC数据库操作乱码无缝过渡解决方案

    JDBC数据库操作乱码非主流解决方案---JDBC连接驱动代理 以驱动的方式提供给使用方,在底层实现连接的代理管理功能,向使用者隐藏 实现过程以及无缝的过渡 你需要了解下列参数: proxy.driver= (必须)实际要连接...

    WAS部署文档

    1. **编辑配置文件**:通过命令行工具(如vi编辑器)编辑WebSphere配置文件`/WebSphere/AppServer/properties/encoding.properties`,调整字符编码设置以解决可能出现的乱码问题。 2. **重启服务**:修改完毕后重启...

    RedHat5.5安装和配置was7.0操作手册

    - 若遇到乱码问题,可提前执行`unset LANG`, `unset LANG_ALL`, `unset LANG_MESSAGE`命令解决。 - 按照提示完成安装步骤,包括但不限于许可协议接受、软件检查、功能部件选择、安装目录设定、安全配置等。 - ...

    中科软JAVA面试题

    解决中文乱码通常涉及字符编码设置,如文件编码、IDE编码、HTTP头编码、页面编码等。 【表单GET与POST】 GET将数据附在URL后面,适合少量数据且不敏感的场景;POST将数据放在请求体中,适合大量或敏感数据。 ...

    J2EE学习教程

    - 解决中文乱码问题。 4. **创建登录验证的过滤器**: - 验证用户身份。 - 控制访问权限。 5. **串联过滤器**: - 多个过滤器串联工作。 #### 十一、JSP+Servlet+JavaBean开发模式 1. **用户登录**: - 登录...

    ssh(structs,spring,hibernate)框架中的上传下载

     以上是Spring+Hibernate将文件二进制数据持久化到数据库的解决方案,而Struts通过将表单中file类型的组件映射为ActionForm中类型为org.apache.struts.upload. FormFile的属性来获取表单提交的文件数据。  工程...

    javaEEjavaEE

    根据给定的信息,标题、描述和标签均指向“javaEE”,但内容部分似乎是不相关的文本,可能包含了乱码或是非中文字符。为了遵循要求,我将专注于“javaEE”这一主题,提供详细的IT知识。 ### Java EE:企业级Java...

    山东建筑大学J2EE讲义

    - **1.4.1 J2EE应用服务器**:J2EE应用服务器是运行J2EE应用程序的平台,常见的有Apache Tomcat、IBM WebSphere、Oracle WebLogic等。 - **1.4.2 J2EE开发环境搭建**:一般包括安装Java JDK、配置J2EE应用服务器以及...

    J2EE经典教程

    - **1.4.1 J2EE应用服务器**:如Apache Tomcat、IBM WebSphere、Oracle WebLogic等,它们提供了一个运行J2EE应用所需的环境。 - **1.4.2 J2EE开发环境搭建**:主要包括安装JDK(Java Development Kit)、配置开发...

Global site tag (gtag.js) - Google Analytics