我正在尝试了解该$LANG
变量在gnome-terminal(及其字符编码首选项)中的行为。我一直在使用iso8859-1(latin1)作为我的主要字符集,并且我所有的文件名都这样编码。
对于以下测试,我将对ls -l
文件名中带有西班牙语重音符号的目录执行以下操作:
情况1:
- 为ISO-8859-1配置的gnome终端
LANG
设置为“ en_US-iso8859-1”- 结果:我可以正确看到所有文件
情况2:
- 为UTF-8配置的gnome终端
LANG
设置为“ en_US-iso8859-1”- 结果:我看到了所有西班牙语字符的乱码。这是预期的,因为我更改了终端的字符编码
情况3:
- 为ISO-8859-1配置的gnome终端
LANG
设置为“ en_US-UTF-8”- 结果:我看到了所有西班牙语字符的乱码。
为什么在最后一种情况下我看到乱码?ls的输出不应该直接将文件名直接发送到gnome-terminal吗?而且,由于gnome-terminal是为ISO-8859-1配置的,所以我希望它们看起来正确。
有一阵子我以为,也许bash正在考虑我的$LANG
变量并执行一些转换。然后我将终端切换为UTF-8,但仍然看不到正确的字符。我什至将ls的输出通过管道传输到xxd,令我惊讶的是,我仍然看到文件编码为:ISO-8859-1。
总结:如果我的清单包含ISO-8859-1字符,并且我的终端仿真器配置了相同的字符编码:LANG
否则设置时谁在进行转换?
感谢您的任何帮助,您可以提供。
克拉科尼亚