Как некоторые предложения, у меня есть идея кэшировать логическое значение:
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);
}
}
}
На хосте 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>  <span class="domain">(<a
А, после поиска и поиска я нашел этот . Как говорится, возможно, вы могли бы попробовать:
/etc/locale.gen
. en_GB.UTF-8 UTF-8
LC_ALL="en_GB.UTF-8"
И затем проверьте вывод команды locale
.