如何将包含非ascii字符的参数值传递给CLI应用程序?

时间:2015-04-23 13:58:02

标签: macos character-encoding command-line-interface osx-yosemite

我无法正确地将UTF-8字符串值作为参数传递给命令行应用程序。

我试过的方法:

  • 在双引号之间传递值:“café”
  • 用单引号传递:'café'
  • 使用字符代码:'caf \ 233'
  • 在字符串前使用$符号:$'café'

我正在使用Mac OS 10.10,iTerm和我当前的语言环境输出:

LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

1 个答案:

答案 0 :(得分:0)

令人怀疑这与shell有什么关系。我会确保你的工具(编写工具和你正在阅读的任何工具)都能正确处理UTF-8。我最怀疑的是,无论你正在阅读你的标签,都要将其解释并打印为Latin-1。您应该使用十六进制编辑器查看文件内部并查找标记。我认为它是正确的(C3 82,这是UTF-8中的é,拉丁语-1中的é)。您的输出工具可能是问题,而不是编写器(绝对不是shell)。

如果您的阅读工具需要Latin-1,那么您需要将é编码为E9。 {{1}}工具可用于为脚本进行转换。