Как изменить кодировку символов сценариев оболочки? - PullRequest
15 голосов
/ 11 января 2010

Я использую превосходный todo.sh Джины Трапани для организации моего списка задач.

Однако, будучи датчанином, было бы неплохо, если бы скрипт принимал специальные датские символы, такие как & oslash; и & aelig;.

Я абсолютный UNIX-n00b, поэтому было бы очень полезно, если бы кто-нибудь мог сказать мне, как это исправить! :)

Ответы [ 2 ]

15 голосов
/ 11 января 2010

Что показывает эта команда?

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"
15 голосов
/ 11 января 2010

Постепенно мир 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...