代码之家  ›  专栏  ›  技术社区  ›  Epaga Alex Reynolds

如何检测Unix终端字符编码?

  •  1
  • Epaga Alex Reynolds  · 技术社区  · 15 年前

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

    2 回复  |  直到 15 年前
        1
  •  2
  •   stacker    15 年前

    检查 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"
    

        2
  •  1
  •   Nicholas Riley    15 年前

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

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