FreeBSD 10.3 + zfs – 字符集在terminal上显示不正确

我有一个在zfs文件系统上有一个samba共享的服务器。 文件名是匈牙利语。 当我用sshlogin时,文件名在terminal上显示不正确:

在这里输入图像说明

如果我对文件名进行自动完成,那么很明显,文件名本身是好的,包含非ASCII字符:

在这里输入图像说明

我已经尝试将terminaltypesstring设置为“putty”,将terminal字符集更改为UTF-8或ISO-8859-2,但都没有帮助。

午夜指挥官出现同样的问题,即使是“行”也是不正确的:

在这里输入图像说明

它将puttyconfiguration中的显示字符更改为ISO8859-2:

在这里输入图像说明

那么至less线字符是正确的,但文件名仍然是不好的:

在这里输入图像说明

如果我启动“mc -ac”,那么我看到破折号而不是行,但文件名仍然是错误的:

在这里输入图像说明

所以一定是地区的问题。 如果我这样做:

setenv LANG hu_HU.ISO8859-2

那么它仍然是错误的:

在这里输入图像说明

我把putty的configuration设置为UTF-8,把LANG设置为hu_HU.UTF-8,然后它有一些字符是好的,但不是全部:

在这里输入图像说明

我迷路了。 我已经尝试了很多其他组合,但他们都没有正常工作。 有谁知道如何设置这个,所以文件名和graphics字符都正确显示在shell和MC?

顺便说一下,正确的文件名前缀应该是:“Díjbekérő”

这是正确的解决scheme。

将LANG环境variables设置为hu_HU.UTF-8

CSH:

setenv LANG hu_HU.UTF-8 

庆典/ SH:

 LANG=hu_HU.UTF-8 export LANG 

还要将putty中的“terminal编码”设置为UTF-8:

在这里输入图像说明

那么它在shell和mc中都是完美的:

在这里输入图像说明 在这里输入图像说明

这也解决了当我从xterm / gnome-terminal Linux机器login时所遇到的问题。

看起来,一般的“全系统”解决scheme是在/etc/login.conf中创build一个新的类,

 hungarian|Hungarian:\ :charset=hu_HU.UTF-8:\ :lang=hu_HU.UTF-8:\ :tc=default: 

然后运行cap_mkdb /etc/login.conf,最后使用chsh更改特定用户的login类。 (对于新用户,当“adduser”要求时,最好指定login类。)

除了terminal编码之外,这里全部logging在案:

https://www.freebsd.org/doc/handbook/using-localization.html

在发送问题之前,我可能已经想清楚了。 但无论如何,我都会提供答案,以防有人遇到同样的问题。

更新:执行此操作后,您将无法使用默认设置的WinSCP。 WinSCP将尝试在服务器上执行“ls -la”并parsing结果。 对于非英文语言环境,结果将包含不同语言的date,而WinSCP不能解释该date。 为了解决这个问题,请去configuration并将列表命令从“ls -la”更改为“env LANG = en_US.UTF-8 ls -la”。 (在编辑连接/高级/环境/ SCP / Shell /目录列表下)

通过使用此设置,您将能够使用WinSCP并同时保持用户的默认语言环境。