3
$ LANG对终端的影响
我正在尝试了解该$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否则设置时谁在进行转换? 感谢您的任何帮助,您可以提供。 克拉科尼亚