Bash:即使将locale设置为UTF-8,也会出现奇怪的字符•&引用;打印为“ΓÇó&引用;

Bash:即使将locale设置为UTF-8,也会出现奇怪的字符•&引用;打印为“ΓÇó&引用;,bash,character-encoding,mingw,git-bash,Bash,Character Encoding,Mingw,Git Bash,我们有一些在Windows中从Git Bash(MINGW64)运行的Groovy脚本。 某些脚本打印项目符号字符•(或类似字符)。 为了使其工作,我们设置了以下变量: export LC\u ALL=en\u US.UTF-8 但是,对一些人来说,这还不够。它的控制台打印的是Γcho,而不是• 关于如何使其正确打印的任何想法,以及为什么即使在设置LC_ALL变量后仍要打印 更新 关键部分是Groovy脚本的输出打印不正确,但普通bash脚本没有问题。查询系统区域设置使用的当前字符映射local

我们有一些在Windows中从Git Bash(MINGW64)运行的Groovy脚本。 某些脚本打印项目符号字符•(或类似字符)。 为了使其工作,我们设置了以下变量:

export LC\u ALL=en\u US.UTF-8

但是,对一些人来说,这还不够。它的控制台打印的是
Γcho
,而不是

关于如何使其正确打印的任何想法,以及为什么即使在设置LC_ALL变量后仍要打印

更新


关键部分是Groovy脚本的输出打印不正确,但普通bash脚本没有问题。

查询系统区域设置使用的当前字符映射
locale charmap
,并使用recode过滤输出以使用兼容的字符映射呈现的示例:

#/副秘书长/垃圾箱/环境卫生

cat它可能与它们的控制台或终端字符编码设置有关。
LC\u ALL
会影响您的shell以及(由于已导出)在其下运行的程序。我不会影响您的终端程序,看起来您的终端正在使用或类似的东西。如果系统上未安装
en_US.UTF-8
locale,
export LC_ALL=en_US.UTF-8
将失败,但通过测试返回代码无法检测到此失败。首先使用
locale-a
查询系统可用的区域设置。哪个$TERM?你能写下•”的代码点吗?一些终端不处理组合字符和/或非BMP(因此0xFFFF以上的字符):它们说它们只是UCS级别1。-在我的电脑上:`LC_ALL=en_US.UTF-8 echo“•$MSYSTEM$MINGW_CHOST”`给我
•MINGW64 x86_64-w64-mingw32
。你能给我们举个例子吗?@Agorreca你可以将groovy(gradle?)输出piipe到
|iconv-f'UTF-8'-t“$(locale charmap)//TRANSLIT
太好了!很抱歉,延迟发生在其他用户(不是我)身上,所以我需要在其他机器上测试。是的,你搞定了!谢谢。你知道如何将其设置为默认转换吗(或类似的东西?)。我们使用了很多脚本,可能会在每个脚本中添加iconv管道,我不知道这是否可行。@Agorreca如果您只在Groovy中遇到问题,可能可以使用Java标准库将字符映射转换为系统的字符映射。请参阅: