【发布时间】:2021-03-26 18:59:38
【问题描述】:
我写了一个类似下面的 bash,它在 Linux 终端中很好地回响,因为我用 UTF-8 对文件进行了编码:
#!/bin/bash
echo 'Olá, möndo!'
我需要让用户选择他们认为合适的任何编码,同时仍然在终端中打印正确的变音符号,但由于终端默认为 UTF-8,任何其他编码都会产生各种奇怪的字符。
所以,问题是:用户应该如何在文件中注释 bash 的编码? bash 是否有让我们这样做的模式?
我知道file -I 几乎可以正确地检测到文件的编码,但是有问题的 bash 是以常规方式./foo.sh 执行的。所以,如果终端能自己检测编码就好了。
【问题讨论】:
-
反之亦然。您的脚本从语言环境知道终端的编码,因此它应该输出采用该编码的文本。不是终端检测你的脚本,是你的脚本提供不同编码的翻译。
-
我认为您首先需要问的问题是:当用户指定编码时,什么程序会将输出转换为正确的输出编码(以及,就此而言,这将如何程序知道正确的输出编码是什么是?)找到答案,并将其构建到脚本中的方式可能会自行回答。
-
我明白了。有时我无法让他们更改应用程序中的设置,但我可以鼓励他们至少将编码写入文件。
标签: linux bash encoding utf-8 terminal