如何更改shell脚本字符编码?

时间:2010-01-10 21:36:51

标签: unix shell character-encoding

我正在使用Gina Trapiani's excellent todo.sh来整理我的待办事项列表。

然而,作为一个丹麦人,如果剧本接受像ø和æ这样的特殊丹麦人物,那就太好了。

我是一个绝对的UNIX-n00b,所以如果有人能告诉我如何解决这个问题,那将是一个很好的帮助! :)

2 个答案:

答案 0 :(得分:15)

慢慢地,Unix世界正在从ASCII和其他区域编码转向UTF-8。您需要运行UTF终端,例如现代xterm或putty。

在你的〜/ .bash_profile中,你将语言设置为UTF-8变种之一。

export LANG=C.UTF-8
or
export LANG=en_AU.UTF-8
etc..

然后,您应该能够在终端中编写UTF-8字符,并将它们包含在bash脚本中。

#!/bin/bash
echo "UTF-8 is græat ☺"

另请参阅:https://serverfault.com/questions/11015/utf-8-and-shell-scripts

答案 1 :(得分:15)

此命令显示了什么?

locale

它应该为你显示这样的东西:

LC_CTYPE="da_DK.UTF-8"
LC_NUMERIC="da_DK.UTF-8"
LC_TIME="da_DK.UTF-8"
LC_COLLATE="da_DK.UTF-8"
LC_MONETARY="da_DK.UTF-8"
LC_MESSAGES="da_DK.UTF-8"
LC_PAPER="da_DK.UTF-8"
LC_NAME="da_DK.UTF-8"
LC_ADDRESS="da_DK.UTF-8"
LC_TELEPHONE="da_DK.UTF-8"
LC_MEASUREMENT="da_DK.UTF-8"
LC_IDENTIFICATION="da_DK.UTF-8"
LC_ALL=

如果没有,您可以在运行脚本之前尝试执行此操作:

LANG=da_DK.UTF-8

您没有说明运行脚本时会发生什么,并且遇到这些字符。他们在todo文件中吗?他们是在提示时输入的吗?有错误信息吗?输出是否取代了预期的输出?

试试这个,看看你得到了什么:

read -p "Enter some characters" string
echo "$string"