终端中一个乱码问题

246 天前
 YGHMXFAL

第[1]步:

find 枚举 Dir 下的所有目录,发现某一个目录的名称中包含一个[FullWidthComma]字符,码点是[U+FF0C]

find Dir -type d &>List

cat List

此时一切正常,FullWidthComma 正常显示,没有乱码

第[2]步:

echo $'\U0000FF0C'

此时 FullWidthComma 乱码了

注[1]:$'string'在 bash 中是一种特殊转义序列,此处使用它来根据码点打印出字符

注[2]:echo 有 2 个版本,一个是 bash 的 buildin 命令,一个独立二进制版本,均乱码

我的问题:

既然第[1]步中显示正常,那应该不是我缺字体/字体中缺字符吧?而且 locales 环境也是从来没变过,请问为什么会一个正常一个乱码呢?

993 次点击
所在节点    Linux
5 条回复
ysc3839
246 天前
1 大概是原样输出,在文件系统中可能就是 UTF-8 bytes 了。
而 2 你传给 echo 的不是 UTF-8 bytes ,就得根据当前 locale 编码成对应 bytes 再输出,可能是因为 locale 设置问题。
huntagain2008
246 天前
小白我建了名字为“,”的文件夹,照你的步骤都操作了一遍,都是正常显示。
你的 locale 配置是否都是 zh_CN.UTF-8 ?
YGHMXFAL
246 天前
@ysc3839 #1 我也觉得 locales 的可能性比较大


@huntagain2008 #2 肯定是,LC_ALL 和 LANG 我都确认了,另外请问你是什么字体下显示呢(虽然我觉得不太像字体问题)
billlee
246 天前
我觉得是终端模拟器的问题,echo 应该不涉及编码转换。
huntagain2008
244 天前
字体是默认的,不知道是啥,可能是 DejaVu Sans Mono Book 。
TERM:xterm-256color
xfce4-terminal 0.8.9.1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/975012

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX