关于字符集我总是有疑问。
本地(Mac OS)
bash-3.2$ 你好
bash: 你好: command not found
bash-3.2$ locale
LANG="en_US.UTF-8"
Linux服务器(ssh)
root@hg:~# 你好
-bash: $'\344\275\240\345\245\275': command not found
root@hg:~# locale
LANG=en_US.utf8
为什么两者都是utf8,在服务器你好
中更改为\344\275\240\345\245\275
但更改为你好
?
剂量\344\275\240\345\245\275
代表utf-8
的{{1}}编码?它应该是你好
吗?有不同的\xE4\xBD\xA0\xE5\xA5\xBD
吗?
答案 0 :(得分:1)
为什么两者都是utf8,在服务器中你改为\ 344 \ 275 \ 240 \ 345 \ 245 \ 275但是文字好吗?
显示来自你的shell。在本地,您正在使用zsh
,它只会在错误消息中复制您的输入。
远程地,您正在使用bash
,即使您错过了正确的字体,也会尝试确保显示该消息,因此它会将每个字节转换为八进制表示。
\ 344 \ 275 \ 240 \ 345 \ 245 \ 275是否代表你的utf-8编码?它应该是\ xE4 \ xBD \ xA0 \ xE5 \ xA5 \ xBD吗?是否有不同的utf-8?
第一个是八进制表示。八进制344
是十六进制e4
。所有字节都匹配,它只是一种不同的显示格式。