首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在它的shebang中注释bash的编码?

有没有办法在它的shebang中注释bash的编码?
EN

Stack Overflow用户
提问于 2021-03-27 02:59:39
回答 2查看 99关注 0票数 1

我写了一个类似下面的bash,它在Linux终端中很好地响应,因为我用UTF-8对文件进行了编码:

代码语言:javascript
复制
#!/bin/bash
echo 'Olá, möndo!'

我需要让用户选择他们认为合适的任何编码,同时仍然在终端中打印正确的变音符号,但是由于终端默认使用UTF-8,所以任何其他编码都会产生各种奇怪的字符。

因此,问题是:用户应该如何在文件中注释bash的编码?bash有没有让我们这样做的模式?

我知道file -I几乎可以正确地检测到文件的编码,但是相关的bashes是以常规的./foo.sh方式执行的。所以,如果终端能自己检测编码就好了。

EN

回答 2

Stack Overflow用户

发布于 2021-03-27 03:10:23

反之亦然。您的脚本知道用户希望在其来自本地LC_MESSAGES的消息中使用的编码,因此您的脚本应该相应地输出采用该编码的文本。它不是终端检测你的脚本,你的脚本为不同的编码提供了它的消息的翻译。LC_MESSAGES也应该有编码信息,所以LC_MESSAGES=en_US.UTF-8不是LC_MESSAGESen_US.EBCDIC

通常提供翻译的方式是通过gettext。Bash带有内置的gettext支持(但它仍然需要大量的工作才能使其可用),并支持$"..."字符串,参见locale translations

票数 2
EN

Stack Overflow用户

发布于 2021-03-27 03:22:39

对于更简单的解决方案,您可以使用iconv动态转换。假设您可以将用户的首选编码从他们的语言环境设置提取到$enc中,那么只需

代码语言:javascript
复制
echo 'Olá, möndo!' | iconv -f utf-8 -t "$enc"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66822889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档