当前位置:  技术问答>linux和unix

java soket程序在Redhat Linux 5上运行汉字乱码.急................

    来源: 互联网  发布时间:2016-06-09

    本文导语:  这是我用的linux的版本信息: LSB Version:    :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch Distributor ID: RedHatEnterpriseServer Description:    Red Hat Enterprise Linux Server release 5 (Tikanga) Release:        5 Codename: ...

这是我用的linux的版本信息:
LSB Version:    :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 5 (Tikanga)
Release:        5
Codename:       Tikanga
我开发了个java soket程序,在这上面运行,这个系统的字符集我已经设置成中文了,设置如下:
#LANG="zh_CN.UTF-8"
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN:zh_CN.UTF-8"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:zh_CN.UTF-8:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
我的程序运行所在的用户也设置成中文了,下面是.bash_profile的内容
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
ORACLE_BASE=/u01/app/oracle;
ORACLE_HOME=$ORACLE_BASE/product/8.1.7;
JAVA_HOME=/usr/java/jdk1.6.0_10
PATH=:$PATH:.:$JAVA_HOME/bin:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/precomp/pub
lic
CLASSPATH=.:/usr/java/jdk1.6.0_10/lib/dt.jar:/usr/java/jdk1.6.0_10/lib/tools.jar
:/home/jserver/ExtLib/axis-ant.jar:/home/jserver/ExtLib/jaxrpc.jar:/home/jserver
/ExtLib/ojdbc14.jar:/home/jserver/ExtLib/axis.jar:/home/jserver/ExtLib/jdom.jar:
/home/jserver/ExtLib/saaj.jar:/home/jserver/ExtLib/commons-discovery-0.2.jar:/ho
me/jserver/ExtLib/log4j-1.2.8.jar:/home/jserver/ExtLib/wsdl4j-1.5.1.jar:/home/js
erver/ExtLib/commons-logging-1.0.4.jar:/home/jserver/ExtLib/xercesImpl.jar:/home
/jserver/ExtLib/mailapi.jar:/home/jserver/ExtLib/activation.jar
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/home/netgate/public/lib:
NLS_LANG=american_america.zhs16gbk;
LANG=zh_CN.GB18030

unset USERNAME
然后我写了个三个shell文件,来执行我的程序,一个是运行,一个停止
start.sh运行的
# User specific environment and startup programs
CLASSPATH=.:/usr/java/jdk1.6.0_10/lib/dt.jar:/usr/java/jdk1.6.0_10/lib/tools.jar
:/home/jserver/ExtLib/axis-ant.jar:/home/jserver/ExtLib/jaxrpc.jar:/home/jserver
/ExtLib/ojdbc14.jar:/home/jserver/ExtLib/axis.jar:/home/jserver/ExtLib/jdom.jar:
/home/jserver/ExtLib/saaj.jar:/home/jserver/ExtLib/commons-discovery-0.2.jar:/ho
me/jserver/ExtLib/log4j-1.2.8.jar:/home/jserver/ExtLib/wsdl4j-1.5.1.jar:/home/js
erver/ExtLib/commons-logging-1.0.4.jar:/home/jserver/ExtLib/xercesImpl.jar
PATH=:$PATH:/usr/java/jdk1.6.0_10/bin:$HOME/bin
LANG=zh_CN.GB18030

export PATH CLASSPATH LANG
unset USERNAME

cd /home/jserver
java jserver.JServer >/dev/null &

stop.sh停止的
i=`ps -ef |grep jserver.JServer|grep -v grep|awk '{print $2}'`
echo $i
kill -9 $i
echo stop ok!!

restart.sh调用以上两个shell重启程序
sh .bash_profile
/home/jserver/stop.sh
/home/jserver/start.sh
#echo $LANG

现在的情况是,手动执行Stop.sh停掉程序,再用start.sh启动程序,一切正常,汉字没有乱码.但使用crontab调用restart.sh重启程序,汉字就是乱码码(是问号"?").
我这个程序在好几台这样的机器上运行,上面的linux系统和这个是一样的.但就没有出现这种情况.
嗯,有一点这台机器和别的不同,就是在切换用户时,输入号令的提示是汉字的,不是英文的password,不知和这个有关没




|
也可以再 restart.sh 中重新设置 bash 需要的环境变量...

crontab是linux下面用于定时执行的例程,基本语法很简单。但是需要注意的是:crontab中没有设定环境变量。

比如:我的程序中需要设置环境为:
export LANG=zh_CN.gbk
export LC_ALL=zh_CN.gbk。
本身系统的locale已经为zh_CN.gbk了,但是在执行crontab例程的时候,在需要执行的bash中还要设置一下locale。比如:每隔5分钟执行一次check.sh。
*/5 * * * * check.sh
check.sh的代码为:

echo "monitor the startindex thread running...."
result=`ps ax|grep RunVegaIndex |grep -v grep | cut -f 2 -d ' '`
echo $result
if [ "$result" = "" ]; then
echo "index threading not running..."
echo "restart the index thread..."
. /etc/profile && cd /root/vegaindex && ./startindex.sh 1>&/dev/null &
date > /root/vegaindex/stoptime.txt
else
echo “running…”
fi

如果执行的程序需要设置locale,那么要在check.sh中设置一下,或者执行以下/etc/profile。


|
1、修改 /etc/sysconfig/i18n 文件,如 
LANG="en_US",xwindow会显示英文界面, 
LANG="zh_CN.GB18030",xwindow会显示中文界面。 
改完之后重启生效,也可以使用以下两种方法直接生效:
[root@rac01 ~]# . /etc/sysconfig/i18n
[root@rac01 ~]# source /etc/sysconfig/i18n


2、cp /etc/sysconfig/i18n $HOME/.i18n 
修改 $HOME/.i18n 文件,如 
LANG="en_US",xwindow会显示英文界面, 
LANG="zh_CN.GB18030",xwindow会显示中文界面。 
(#LANG="zh_CN.gb2312"也行)
这样就可以改变个人的界面语言,而不影响别的用户 
(Debian不支持GB18030(RH的zysong字库是有版权的) 
现在好像没有Free的GBK和GB18030字库 


3、在宿主目录下:
vi .bashrc或者是vi .bash_profile
export LANG=zh_CN.GB2312 
export LC_ALL=zh_CN.GB2312)
即时生效方法如上


例:[root@RHEL4_U5 test]# cat /etc/sysconfig/i18n 
#LANG="en_US.UTF-8" 
LANG="zh_CN.gb2312" 
SUPPORTED="zh_CN.UTF-8:zh_CN:zh" 
SYSFONT="latarcyrheb-sun16" 
然后就可以正常地显示中文了

    
 
 

您可能感兴趣的文章:

  • 求救:JAVA 中汉字编码怎样变成 VC 下的汉字编码?
  • jni中汉字问题,如何把java中的汉字转化到c中去?
  • 谁能帮我一下100分:在PDA的WinCE平台上,用JAVA语言开发程序,为什么不能在label,button显示汉字呢?却能在textarea中显示汉字呢!!!
  • 汉字的问题:我用纯java把汉字从库里取出来显示,代码如下:String dbstr1= new String(ls.getBytes("ISO8859_1"),"gb2312"),可一部分字
  • JAVA中将汉字写到文本文件的问题
  • java汉字显示乱码问题??
  • JAVA程序里不能正确显示汉字
  • java中关于汉字的问题
  • java中怎样解决汉字乱码问题?
  • 如何在IBM Visualage for java的编辑环境中显示汉字??谢谢!
  • 紧急求援:一个jacorb给java客户端传输汉字显示的问题!
  • 贴几篇文章,关于Java 编程技术中汉字问题的分析及解决,大家共同学习吧......
  • Java应用程序,汉字显示成方格......
  • java中怎样向文件中写入汉字
  • java中将汉字转换成拼音的实现代码
  • java 截取字符串(判断汉字)
  • 如何在VC和JAVA间传递汉字,哪个晓得?
  • 汉字转拼音的Java类库 JPinyin
  • 再来讨论一下JAVA中的汉字编码问题
  • Java 按照字节来截取字符串的代码(不会出现半个汉字)
  • linux环境下,java程序手工运行不乱码,crontab自动运行就乱码
  • java生成csv文件乱码的解决方法示例 java导出csv乱码
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • linux下java程序中的乱码问题
  • java应用程序的中文乱码问题。
  • java DocConverter.jar转换word文档到pdf 中文乱码问题
  • java自动根据文件内容的编码来读取避免乱码
  • 用java读中文linux中的文件是正确的,用java读英文linux版本中的文件是乱码,如何使英文linux读出的文件数据也是中文的?
  • java通过stock与mysql通信时出现乱码的问题
  • java URL乱码的解决办法
  • linux下的java程序,到windows下看注释部分是乱码???
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • SecureCRT上运行一个JAVA程序,该程序类似一个在WINDOWS下一直运行的CMD窗口的东西,SecureCRT关掉后,JAVA还会继续运行吗?
  • 我用JBUILDER7。只有两三天,问:一个项目有一个welcomeapp.java ,还有一个是welcomappframe.java,请问那一是主表单,(即运行时,运行的
  • java显示当前运行时的参数(java运行参数)
  • java教程之java程序编译运行图解(java程序运行)
  • 谁知道为什么我的TextPad中没有编译Java、运行Application、运行Applet这三个选项????
  • 哪有jvm(java虚拟机)下载,为了让ie运行一些java程序!
  • 我想学java,那java的运行环境是什么?
  • 开发的java工程系统运行在linex上,现在想监控这个系统的运行情况
  • java初手,请问到那里下载java在ie下面的插件,让ie可以运行applet
  • 请问java编制的程序主要运行在服务器端还是客户端?听说它的速度比较慢,怎么可以运行在服务器端呢?谢谢!
  • 请问在java多线程中,是只有run(){}内的代码运行在一个新线程下呢?还是这个类中的代码都运行在一个新线程下?
  • 低级问题:.java文件交付用户怎么运行,难道也是DOS下:java xx.java?有没有.exe?
  • 最入门级的java问题,如何运行HelloWorld.java
  • jdk1.4 单独运行java应用程序单独运行出现环境变量问题?问题解决马上给分!!
  • 我用telnet登陆到linux下运行了一个java程序,在关闭了telnet后怎么能让这个java程序继续执行
  • 请问在LINUX下JAVA的平台是什么?如我在WIN下开发了JAVA程序,如何在LINUX下运行呢?
  • 为何在appletviewer中可以正确运行的java applet程序在IE5.0浏览器中不能运行
  • 怎样配置java 2 的运行环境
  • 我用telnet登陆到linux下运行了一个java程序,在关闭了telnet后怎么能让这个java程序继续执行,请高手指点一下
  • 运行JAVA命令错误
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3