据我所知,我们可以通过操纵 locale 设置来修改字符编码的行为。 这样,如果我的语言环境设置如下所示:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
...
LC_ALL=
并且我尝试使用包含特殊符号(抛光字母)的文件运行 ls ,一切正常:
[rafkamin@localhost]$ ls
żółć
更改语言环境设置后,即通过导出LANG = C,特殊符号将替换为问号,因为我们摆脱了UTF-8编码。
[rafkamin@localhost]$ ls
????????
问题
在Yocto Project的SDK构建阶段,我可以采用与上述相同的方式来影响编码。但是在我正在研究的项目中,尽管我没有明确修改语言环境设置,但字符编码还是受到某种影响:
sdk [rafkamin@...]$ touch żółć
sdk [rafkamin@...]$ ls
????????
但是,如果我查看语言环境设置,一切似乎都很好:
sdk [rafkamin@...]$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
...
LC_ALL=
在这一点上,我不确定我应该寻找什么。
是否有什么可以影响核心utils中的字符编码,并且同时覆盖了 locale 指向的内容?