Unix shell不显示UTF8线条图符号

时间:2014-11-04 08:55:27

标签: shell unix utf-8

拳头,这个问题的背景有些无关:

所以我为PHP写了an advanced variable dumper,现在可以检测到什么时候在CLI中启动脚本,并且如果客户端支持它会添加一些视觉效果(putty screenshot):

putty Kint screenshot

颜色很漂亮,但我现在对格式化更感兴趣。我正在使用以下七个UTF8符号来实现此目的:

    ┌ ─ ┐
    │
    └ ▄ ┘

但是,在不同的计算机上通过相同的SSH连接凭据启动相同的脚本 输出此混乱:

ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â                                      $t                                      â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
array (1) [
    integer 123
]
â
 â
  â
   â
    â
     â
      â
       â
        â
         â
          â
           â
            â
             â
              â
               â
                â
                 â
                  â
                   â
                    â
                     â
                      â
                       â
                        â
                         â
                          â
                           â
                            â
                             â
                              â
                               â
                                â
                                 â
                                  â
                                   â
                                    â
                                     â
                                      â
                                       â
                                        â
                                         â
                                          â
                                           â
                                            â
                                             â
                                              â
                                               â
                                                â
                                                 â
                                                  â
                                                   â
                                                    â
                                                     â
                                                      â
                                                       â
                                                        â
                                                         â
                                                          â
                                                           â
                                                            â
                                                             â
                                                              â
                                                               â
                                                                â
                                                                 â
                                                                  â
                                                                   â
                                                                    â
                                                                     â
                                                                      â
                                                                       â
                                                                        â
                                                                         â
                                                                          â
                                                                           â
                                                                            â
                                                                             â
                                                                              â
                                                                               â

Called from APP/shell/cron/test.php:8

我是一个完整的unix noob并且不确定调试信息有多少会有用,但是正确的显示在WIN8.1上,而错误的显示在WIN7上。另外,在油灰中:

uname -a
Linux [removed] 2.6.32-431.29.2.el6.x86_64 #1 SMP Tue Sep 9 21:36:05 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

这会导致什么?是否有解决方法或者我可以通过shell命令检测UTF8支持(在这种情况下回退到ASCII符号)?

我很感激任何输入,我可以尝试的任何想法 - 我不想再使用有限的ASCII设置恢复格式化。


使用解决方案进行编辑

显示的字符取决于客户端的putty设置,如here所示。所以,由于午夜指挥官在配置错误的客户端时可以买得起一些文物,我也是如此。我所做的唯一改变就是将字符替换为,这样就不会在代码片段中引起新的行以上。固定输出看起来像这样(第一个是正确的,utf-8语言设置):

enter image description here

1 个答案:

答案 0 :(得分:1)

[编辑] 关于serverfault的这个问题应该有所帮助:https://serverfault.com/questions/475925/how-to-fix-putty-showing-garbled-characters

我不知道为什么Windows 8.1与Windows 7的工作方式不同。我对这类问题的第一个猜测是编码被搞乱,但由于你在两台Windows机器上使用相同的命令,它应该在两者上都失败或者无。

下一个罪魁祸首通常是字体,但是,对于未知符号,你会得到一个空心框而不是â

接下来我要尝试的是一种解决方法。我没有在Unix端进行格式化,而是创建了一个服务器脚本,它只是以内部格式(CSV,XML,JSON,...)向我发送变量及其值。然后我会写一个脚本来查询这些值并在本地格式化它们。这样,格式化程序可以检查本地系统,确定其功能并做正确的事情。