Сопоставление с образцом внутри awk

Похоже, что вы используете консоль Linux (а не один из эмуляторов терминала на базе X), и что она не работает в режиме UTF-8. Я бы использовал этот сценарий, чтобы включить его (и выяснить, почему он выключен):

#!/bin/sh
# send character-string to enable UTF-8 mode
if test ".$1" = ".off" ; then
        printf '\033%%@'
else
        printf '\033%%G'
fi

то есть, вызовите сценарий utf8, и введите

utf8 on

Чтобы исследовать сообщения об ошибках, я сделал такой сценарий, в двух вариантах (один в UTF-8, а другой в ISO-8859-1):

#!/bin/bash
printf "ä\n"
echo "ä"
ä

Скрипт UTF-8 говорит

$ ./foo
ä
ä
./foo: line 4: ä: command not found

а скрипт ISO-8859-1 говорит (в терминале, использующем локаль с кодировкой UTF-8):

$ ./foo2
�
�
./foo2: line 5: $'\344': command not found

Дело в том, что bash корректирует свое сообщение об ошибке в соответствии с локалью, и, видя, что он не может показать символ ISO-8859-1 в локали UTF-8, показывает его как восьмеричное число.

1
16.07.2015, 02:36
0 ответов

Теги

Похожие вопросы