Dan*_*Niu 4 freebsd ssh tty unicode
我正在尝试使用 Mintty 从我的 Windows 机器 ssh 到 FreeBSD-11.2-Release,但是当我将 LC_ALL 设置为 en_US.UTF-8 并尝试输入/粘贴非 ASCII 字符时,连接已关闭。
我正在使用 Cygwin,也尝试过 Qterminal 和 Terminator。
FreeBSD 在 11.2-Release 版本中是否存在 UTF-8 字符问题?或者这只是特定于 Windows 的(我的意思是 macOS 或 Linux 用户对它没有问题)?
注意:我没有在 FreeBSD 机器上安装任何窗口系统。
您声称设置,LC_ALL但我不确定您是否正确设置。The FreeBSD Handbook: 22.2实际上涵盖了所有内容。使用本地化
我强烈建议您使用“登录类方法”(login.conf)而不是“外壳启动文件方法”(.profile),因为它在整个系统和外壳中更加一致。
当人们说他们修改了与语言相关的设置时,他们通常会忘记两件事:
/etc/login.conf(系统范围)或~/.login.conf(用户)时,您需要运行cap_mkdb才能产生任何效果!第一件事是通过运行命令 locale 来验证您的设置。在普通的 FreeBSD 系统上,它会告诉你:
$ locale
LANG=
LC_CTYPE="C"
LC_COLLATE="C"
LC_TIME="C"
LC_NUMERIC="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
使用这些设置,您将在最常见的终端上遇到 Unicode 问题。我正在使用 PuTTY,但无法将以下测试粘贴到终端中:
ÆØÅ ?? ? ?
Run Code Online (Sandbox Code Playgroud)
这是因为 FreeBSD 的默认设置是不使用 unicode。此答案已针对 11.2 进行了测试,但将来从 13 开始,默认值为“C.UTF8”,无需更改。但是,在 vanilla 安装中,您可以通过将用户设置为使用“俄语”来进行非常快速的检查。原因是俄语是唯一定义的开箱即用语言(in /etc/login.conf)并且它使用 unicode。
pw usermod johndoe -L russian
Run Code Online (Sandbox Code Playgroud)
现在使用“johndoe”帐户(无论您的用户名称如何)登录到新会话。您现在可以将 unicode(来自上面的测试)粘贴到 shell 中。验证设置是如何使用的locale
$ locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
因为我现在已经验证了基本的 unicode 确实有效 - 然后我可以开始根据自己的喜好进行设置。由于我是丹麦人,我将执行以下简单步骤:
对于我需要的每种语言,我将添加一个部分 /etc/login.conf
danish|Danish Users Accounts:\
:charset=UTF-8:\
:lang=da_DK.UTF-8:\
:tc=default:
Run Code Online (Sandbox Code Playgroud)
每当您编辑源 login.conf 时,都需要更新数据库。
cap_mkdb /etc/login.conf
Run Code Online (Sandbox Code Playgroud)
我通常pw用来管理我的用户。现在我只需要在创建或修改我的用户时指定语言。
pw useradd janedoe -L danish
Run Code Online (Sandbox Code Playgroud)
提示:我个人的偏好是不更改系统范围内的“默认值”,而是将其保留为默认值。然后我设置系统帐户的语言,例如“postgres”。如果您的语言设置未涵盖某个系统帐户所需的非常具体的设置,那么我会在/etc/login.conf. 这使事情保持整洁。
提示 2:以上显示了如何根据用户设置类。如果您想要系统范围的更改,您可以更改 login.conf 中的“默认”类。
PuTTY 提示:您的终端自然也需要支持 UTF-8。在 PuTTY 中,这是在设置中: Window ? 翻译。我的设置为“UTF-8”。如果您在 CJK 区域,您可能需要检查“将 CJK 歧义字符视为宽”。西里尔文用户通常喜欢“Caps Lock 充当西里尔文开关”。
| 归档时间: |
|
| 查看次数: |
1721 次 |
| 最近记录: |