关于java乱码的问题小结

阅读更多

在最近做审查系统相关模块时,由于是有程序去调用javac来进行文件的编译和ftp上传,老是遇到java乱码的问题,搞的很郁闷,一开始总是想着去调系统的环境变量,调来调去,最后想想,这样的程序起不是太不具有通用性了,完全依赖系统,也跟java的初衷有被,于是想着去在程序方面改动.

一. 如果想从系统环境变量设置方面入手,可以使用下面程序先检测系统的环境变量设置情况:

package com.gztelecom;
 import java.util.*;
 import java.text.*;
 /**
  * 目的:显示环境变量和JVM的缺省属性
  * 输入:无
  * 输出:1 支持的LOCALE
  *      2 JVM的缺省属性
  */
  public class Env
  {   
   /**    
    *  main entrance    
    */   
    public static void main(String[] args)
    {            
  System.out.println("Hello, it's: " +  new Date());       
  //print available locales       
  Locale list[] = DateFormat.getAvailableLocales();       
  System.out.println("======System available locales:======== ");       
  for (int i = 0; i < list.length; i++)
  {           
   System.out.println(list[i].toString() + "\t" + list[i].getDisplayName());       
  }       
  //print JVM default properties       
  System.out.println("======System property======== ");       
  System.getProperties().list(System.out);   
     }
 }

二. 修改系统环境变量

以solaris 为例,修改 /.profile ,使用LANG=zh_CN.GB18030

export LANG

三,修改程序启动脚本 注意字体红色部分

#!/bin/bash
#Use this script to start SyncManager standalone application!
LC_ALL=zh_CN.GB2312
export LC_ALL
LC_CTYPE=zh_CN.GB2312
export LC_CTYPE
LC_NUMERIC=zh_CN.GB2312
export LC_NUMERIC
LC_TIME=zh_CN.GB2312
export LC_TIME
LC_COLLATE=zh_CN.GB2312
export LC_COLLATE
LC_MONETARY=zh_CN.GB2312
export LC_MONETARY
LC_MESSAGES=zh_CN.GB2312
export LC_MESSAGES
LANG=zh_CN.GB2312
export LANG
locale
cd /home/checkup/WEB-INF/bin
#STEP 1 : set the classpath
separator=":"
classpath=/home/checkup/WEB-INF/classes
for i in /home/checkup/WEB-INF/lib/*
  do
    classpath=$classpath$separator$i
  done

#STEP 2 : start the application
echo $classpath
JAVA_EXEC="/j2sdk1.4.2_13/bin/java -Dfile.encoding=GB2312  -cp $classpath com.gztelecom.CheckupSystemHandler"
nohup $JAVA_EXEC &
#$JAVA_EXEC

你可能感兴趣的:(Java,JVM,Web,Solaris,Bash)