我先用SSH做了个工程,连的是ORACLE10,部署编译放到LINUX下正常,LINUX装了TOMCAT,和JDK,没有中文乱码,后来在网上下了个飞天论坛,纯JSP做的,改了下挂到SSH里,那个论坛在在WINDOWS下连ORACLE一切正常,增删改查,中文显示什么的,都正常,部署放在LINUX下后就中文乱码,在LINUX下插入都是乱码,网上有的说是字符编码的问题,一会贴下LINUX编码和ORACLE字符编码,其它的如,加转换啊,我在网上找了个,public static String ISOtoGB(String iso){ 
String gb; 
try{ 
if(iso.equals("") || iso == null){ 
return ""; 

else{ 
iso = iso.trim(); 
gb = new String(iso.getBytes("ISO-8859-1"),"gbk"); 
return gb; 


catch(Exception e){ 
System.err.print("编码转换错误:"+e.getMessage()); 
return ""; 


public static String GbToISO(String iso){ 
String gb; 
try{ 
if(iso.equals("") || iso == null){ 
return ""; 

else{ 
iso = iso.trim(); 
gb = new String(iso.getBytes("gbk"),"ISO-8859-1"); 
return gb; 


catch(Exception e){ 
System.err.print("编码转换错误:"+e.getMessage()); 
return ""; 


}分别在插放时转换和取出时转换还是乱码,其它的如在插入时用比如String title = new String(rs.getString"title").getBytes())再插还是乱码,实在不知怎么解决,
这是LINUX字符编码:[root@WEB root]# locale 
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
这是ORACLE
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
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_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.1.0.2.0