我在JSP中做一个文件上传,同时把文件名和上传时间插入到oracle9i中,但是遇到一个问题:
在Windows环境下没有问题但是在linux下插入数据就变成乱码已试过各种编码格式,都不正确。从数据库中读出中文确没有问题。。上传文件插入数据代码:                DbConnect dc = new DbConnect();
com.jspsmart.upload.File file = su.getFiles().getFile(0);
String filename = file.getFileName();
//filename = new String(filename.getBytes("GBK"),"UTF-8");   
String strSql = "insert into uploadfiles values('"+ filename +"',sysdate)";
        dc.Update(strSql);
中文文件名数据到oracle中就变成乱码!请高人帮忙!!

解决方案 »

  1.   

    前面说错了,oracle是11g的
    我的oracle参数:PARAMETER VALUE
    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 11.1.0.6.0
      

  2.   

    试试看
    filename = new String(filename.getBytes("GBK"),"UTF-16");filename = new String(filename.getBytes(),"UTF-16");
      

  3.   

    如果楼上的不成功, 再试试
    filename = new String(filename.getBytes ("ISO8859_1"),"UTF-8");
    filename = new String(filename.getBytes ("ISO8859_1"),"UTF-16");
      

  4.   

    问题应该在jspsmart.upload的文件上传功能对中文文件名的处理上改了好几个地方都不行。。