2010-04-22 78 views
1

有没有办法来检测调用我的Java程序的终端中的字符编码集?在Windows中,我可以调用“chcp”工具并解析输出。如何检测Unix终端字符编码?

但是在Linux或Mac上呢?

+0

@Epage更新了我的回答 – stacker 2010-04-22 10:34:31

回答

2

检查locale(1)手册页

您可以通过设置LANG环境变量改变这个

$ export LANG=en_US.iso88591 

$ locale 
LANG=en_US.iso88591 
LC_CTYPE="en_US.iso88591" 
LC_NUMERIC="en_US.iso88591" 
LC_TIME="en_US.iso88591" 
LC_COLLATE="en_US.iso88591" 
LC_MONETARY="en_US.iso88591" 
LC_MESSAGES="en_US.iso88591" 
LC_PAPER="en_US.iso88591" 
LC_NAME="en_US.iso88591" 
LC_ADDRESS="en_US.iso88591" 
LC_TELEPHONE="en_US.iso88591" 
LC_MEASUREMENT="en_US.iso88591" 

LC_IDENTIFICATION = “en_US.iso88591”

+0

总比没有好...问题在于即使在更改终端编码之后,区域设置也会提供相同的输出......它只是为新控制台提供默认控制台编码... – Epaga 2010-04-22 09:20:36

1

有从终端没有定义的通信路径应用程序在终端窗口内运行的进程(在模拟终端定义的那些窗口(例如窗口大小更改)之外)。在任何其他类Unix操作系统上也是如此。环境变量只能在进程启动时继承。看看这些环境变量的值是你所能做的。

你真的希望人们在终端窗口打开时改变编码吗?我无法想象这是一个常见的用例。