aauggogogo您好: 
我想您是由Windows環境將中文檔名的檔案上傳到Solaris的檔案系統,然後看到上傳的檔名變成??的樣子吧? 
由於我目前手邊沒有Solaris 10的環境,所以我改用Linux環境的經驗來說明,供您參考: 
首先,參考這篇文章
JVM and OS System Properties,將下列的程式碼編譯成SysProperties.class 
SysProperties.java: 
import java.util.Properties;
public class SysProperties {
   public static void main(String[] args) {
      Properties sysProps = System.getProperties();
      sysProps.list(System.out);
   }
}
然後執行 
java SysProperties
可以得到類似下面的輸出 

 Windows: 
-- listing properties -- 
java.runtime.name=Java(TM) SE Runtime Environment 
sun.boot.library.path=C:\Program Files\Java\jdk1.6.0_23\jre... 
java.vm.version=19.0-b09 
java.vm.vendor=Sun Microsystems Inc. 
java.vendor.url=http://java.sun.com/ 
path.separator=; 
java.vm.name=Java HotSpot(TM) Client VM 
file.encoding.pkg=sun.io 
user.country=TW 
sun.java.launcher=SUN_STANDARD 
sun.os.patch.level=Service Pack 3 
java.vm.specification.name=Java Virtual Machine Specification 
user.dir=D:\workspace\test 
java.runtime.version=1.6.0_23-b05 
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment 
java.endorsed.dirs=C:\Program Files\Java\jdk1.6.0_23\jre... 
os.arch=x86 
java.io.tmpdir=C:\DOCUME~1\user\LOCALS~1\Temp\ 
line.separator= 
java.vm.specification.vendor=Sun Microsystems Inc. 
user.variant= 
os.name=Windows XP 
sun.jnu.encoding=MS950 
java.library.path=C:\Program Files\Java\jdk1.6.0_23\bin... 
java.specification.name=Java Platform API Specification 
java.class.version=50.0 
sun.management.compiler=HotSpot Client Compiler 
os.version=5.1 
user.home=C:\Documents and Settings\user 
user.timezone= 
java.awt.printerjob=sun.awt.windows.WPrinterJob 
file.encoding=MS950
java.specification.version=1.6 
user.name=andowson 
java.class.path=D:\workspace\test\bin 
java.vm.specification.version=1.0 
sun.arch.data.model=32 
java.home=C:\Program Files\Java\jdk1.6.0_23\jre 
java.specification.vendor=Sun Microsystems Inc. 
user.language=zh 
awt.toolkit=sun.awt.windows.WToolkit 
java.vm.info=mixed mode, sharing 
java.version=1.6.0_23 
java.ext.dirs=C:\Program Files\Java\jdk1.6.0_23\jre... 
sun.boot.class.path=C:\Program Files\Java\jdk1.6.0_23\jre... 
java.vendor=Sun Microsystems Inc. 
file.separator=\ 
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport... 
sun.cpu.endian=little 
sun.io.unicode.encoding=UnicodeLittle 
sun.desktop=windows 
sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+m... 

 Linux: 
[andowson@scm ~]$ java SysProperties 
-- listing properties -- 
java.runtime.name=Java(TM) SE Runtime Environment 
sun.boot.library.path=/usr/java/jdk1.6.0_23/jre/lib/i386 
java.vm.version=19.0-b09 
java.vm.vendor=Sun Microsystems Inc. 
java.vendor.url=http://java.sun.com/ 
path.separator=: 
java.vm.name=Java HotSpot(TM) Server VM 
file.encoding.pkg=sun.io 
user.country=TW 
sun.java.launcher=SUN_STANDARD 
sun.os.patch.level=unknown 
java.vm.specification.name=Java Virtual Machine Specification 
user.dir=/home/andowson 
java.runtime.version=1.6.0_23-b05 
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment 
java.endorsed.dirs=/usr/java/jdk1.6.0_23/jre/lib/endorsed 
os.arch=i386 
java.io.tmpdir=/tmp 
line.separator= 
java.vm.specification.vendor=Sun Microsystems Inc. 
os.name=Linux 
sun.jnu.encoding=UTF-8 
java.library.path=/usr/java/jdk1.6.0_23/jre/lib/i386/se... 
java.specification.name=Java Platform API Specification 
java.class.version=50.0 
sun.management.compiler=HotSpot Tiered Compilers 
os.version=2.6.18-194.11.1.el5 
user.home=/home/andowson 
user.timezone= 
java.awt.printerjob=sun.print.PSPrinterJob 
file.encoding=UTF-8
java.specification.version=1.6 
user.name=andowson 
java.class.path=. 
java.vm.specification.version=1.0 
sun.arch.data.model=32 
java.home=/usr/java/jdk1.6.0_23/jre 
java.specification.vendor=Sun Microsystems Inc. 
user.language=zh 
java.vm.info=mixed mode 
java.version=1.6.0_23 
java.ext.dirs=/usr/java/jdk1.6.0_23/jre/lib/ext:/us... 
sun.boot.class.path=/usr/java/jdk1.6.0_23/jre/lib/resourc... 
java.vendor=Sun Microsystems Inc. 
file.separator=/ 
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport... 
sun.cpu.endian=little 
sun.io.unicode.en 
然後觀察file.encoding這個系統屬性的值,可以發現在Windows上是MS950,在Linux上是UTF-8,也就是說JVM預設的編碼將會採用MS950和UTF-8來處理檔案的I/O。故通常都會出現一些錯誤訊息,例如File Not Found或寫檔時,檔名看到一堆??和亂碼。 
解決的方法: 
目前我是將Linux的預設編碼改為Big5,修改/etc/sysconfig/i18n( 

 需要重開機reboot OS): 
LANG="zh_TW.Big5"
另外一種方式(沒試過請自行確認)是啟動JVM時加上-Dfile.encoding=MS950或-Dfile.encoding=Big5 
參考資料: 
http://stackoverflow.com/questions/361975/setting-the-default-java-character-encoding