日期:2014-05-16  浏览次数:20862 次

java程序在linux系统下中文输出乱码,输出一个汉字对应一个问号
linux输出问号问题:centos 5.6 64位系统,jdk1.6.0_10 
  昨天有一个问题搞了一整天没搞出来.
程序部署到linux系统下
rmsg = getXSdata(fixlen);
String strLink ="\r\n测试时间:"+getTime()+"\r\n"+ rmsg
rmsg的数据是查询数据库得到的。
数据库在linux下正常显示中文,只有程序中的汉字如:测试时间输出时显示问号,一个汉字对应一个问号。
起初一切都是正常的,第二天服务器重启就出现这个问题了。
我在/etc/profile文件中加入
export LC_ALL="zh_CN.GB18030:zh_CN.GB2312:zh_CN.GBK:zh_CN:en_US.UTF-8:en_US:en:zh:zh_TW:zh_CN.BIG5"
export LANG="zh_CN.UTF-8"
export LANG="zh_CN.GB18030"
在/etc/sysconfig/i18n 中加入
LANG="zh_CN.GB18030"  
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"  
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"  
SYSFONT="lat0-sun16"
我该设置该改的地方都改了,哪位大侠帮我看看,如何解决这个问题。

还有用程序远程连接上去返回的所有数据都是正常的,但是终端设备和telnet返回的数据是一个汉字对应一个问号

------解决方案--------------------
不要LANG="zh_CN.GB18030"
只要LANG="zh_CN.UTF-8"
Linux默认的都是UTF-8编码,指定那个会更麻烦。
------解决方案--------------------
中文显示也可能是字体不支持的原因。
不过既然你数据库里中文显示是正常的,
可能就不是字体的原因。

仅提供一个排查的方向,实在搞不定再考虑这个吧。