use*_*971 1 ascii unicode conversion
为什么将 ASCII 编码的文件扩展为 UTF-8 或反向缩减为 ASCII?
user:~$ echo 'A B C | } ~' > ./file
user:~$
user:~$ file --brief --mime ./file
text/plain; charset=us-ascii
user:~$
user:~$
user:~$ echo '? ? ? ' >> ./file
user:~$
user:~$ file --brief --mime ./file
text/plain; charset=utf-8
user:~$
user:~$
user:~$ cat ./file
A B C | } ~
? ? ?
user:~$
user:~$
user:~$ sed -i '$d' ./file
user:~$
user:~$ cat ./file
A B C | } ~
user:~$
user:~$ file --brief --mime ./file
text/plain; charset=us-ascii
user:~$
Run Code Online (Sandbox Code Playgroud)
如果您无法读取第二个echo语句中的字符:从第一个到最后一个:U+1D01, ?; U+266B, ?; U+2F0C, ?; U+1D411, ; U+1F035, ; U+1F200, .
区域设置是:
user:~$ echo $LANG
en_US.UTF-8
user:~$ echo $LANGUAGE
en_US:en
user:~$ echo $LC_COLLATE
user:~$ echo $LC_CTYPE
user:~$ echo $SHELL
/bin/bash
user:~$ echo $SHELL
/bin/bash
user:~$
user:~$ ps -p $$
PID TTY TIME CMD
7537 pts/6 00:00:00 bash
user:~$
Run Code Online (Sandbox Code Playgroud)
我认为您混淆了“编码”和“字符集”。
在第一种情况下,文件仅包含在 US-ASCII 中找到的字符。这意味着无论您使用何种语言设置来显示该文件,该文件看起来都相同。
在第二种情况下,文件现在包含属于 UTF8 字符集的字符,因为这是您放入其中的内容。
这里没有发生转换;该命令只是告诉您文件的内容是什么。