How do I change a shell scripts character encoding? How do I change a shell scripts character encoding? unix unix

How do I change a shell scripts character encoding?


Slowly, the Unix world is moving from ASCII and other regional encodings to UTF-8. You need to be running a UTF terminal, such as a modern xterm or putty.

In your ~/.bash_profile set you language to be one of the UTF-8 variants.

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

You should then be able to write UTF-8 characters in the terminal, and include them in bash scripts.

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

See also: https://serverfault.com/questions/11015/utf-8-and-shell-scripts


What does this command show?

locale

It should show something like this for you:

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=

If not, you might try doing this before you run your script:

LANG=da_DK.UTF-8

You don't say what happens when you run the script and it encounters these characters. Are they in the todo file? Are they entered at a prompt? Is there an error message? Is something output in place of the expected output?

Try this and see what you get:

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