Декодирование байтов на utf-8 возвращает разные результаты [duplicate]

Как некоторые предложения, у меня есть идея кэшировать логическое значение:

public class Element {
    private Boolean exist;

    public void ifExist(Consumer<Element> consumer) {
        if (exist == null) {
            exist = exist();
        }
        if (exist) {
            consumer.accept(this);
        }
    }

    public void ifNotExist(Consumer<Element> consumer) {
        if (exist == null) {
            exist = exist();
        }
        if (!exist) {
            consumer.accept(this);
        }
    }
}
1
задан baxx 7 December 2015 в 11:14
поделиться

2 ответа

На хосте POSIX Python определяет выходную кодировку из locale - набор переменных среды, которые сообщают, как среда настроена для различных языковых настроек. См. Функцию locale.getdefaultlocale() или, более конкретно, функцию locale.getpreferredencoding() .

Выход этой функции используется для установки sys.stdout.encoding , который затем используется для кодирования любого напечатанного текста в Юникоде.

Ваш языковой стандарт установлен на POSIX, а это означает, что кодировка по умолчанию - ASCII. Вам нужно будет настроить этот язык для использования кодировки, поддерживающей все Unicode. Как это сделать для Chromebook, я не знаю. На моем Mac локаль установлена ​​в en_US.UTF-8, в основном, поэтому весь стандарт Unicode поддерживается моим терминалом. Вы можете заставить проблему установить export LC_CTYPE=en_US.UTF-8.

Вы можете переопределить выбор Python, установив переменную среды PYTHONIOENCODING .

Обратите внимание, что на более последние выпуски Python 3, sys.stdout и sys.stderr используют обработчик ошибок backslashescape , который заменяет любой символ, который ваша консоль не может обрабатывать со стандартными \xhh, \uhhhh и \Uhhhhhhhh escape-последовательности; поэтому вместо исключения вы увидите:

Antelope Canyon, Arizona [1600\xd71068] </a>&#32; <span class="domain">(<a 
2
ответ дан Martijn Pieters 27 August 2018 в 11:52
поделиться

А, после поиска и поиска я нашел этот . Как говорится, возможно, вы могли бы попробовать:

  1. Изменить (сначала создать файл /etc/locale.gen.
  2. Вставить в него следующий текст:
    en_GB.UTF-8 UTF-8
    LC_ALL="en_GB.UTF-8"
    
  3. Возможно, попробуйте перезагрузить Chromebook.

И затем проверьте вывод команды locale.

1
ответ дан Kevin Guan 27 August 2018 в 11:52
поделиться
Другие вопросы по тегам:

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