Пользователь вводит строку на моем веб-сайте. Они вводят символ не-ascii.Функция печати python3 испускает «ascii» кодек не может кодировать ошибку символа
javascript сохраняет свой вход, упаковывает его с помощью JSON.stringify() и отправляет его на сервер.
Сервер, работающий Python3, распаковывает JSON с json.loads и сохраняет эту строку в объект Node, затем запускает линию
print('looks like {}'.format(node_obj))
Я получаю ошибку
'ascii' codec can't encode character error '\u2212' in position 941: ordinal not in range(128)
ПОХОЖЕ, для меня, что функция печати в Python3 пытается преобразовать строку unicode в ascii! (преобразовать в объект байтов с использованием ascii-кодирования?)
Возможно ли, что мой FreeBSD-сервер не поддерживает UTF-8, заставив функцию печати Python выполнить это преобразование? Или, возможно, строка никогда не была должным образом дезинфицирована в первую очередь, и я должен делать это в javascript, когда я впервые получаю ее от пользователя?
Позвольте мне знать, какая дополнительная информация вам полезна.
% локаль LANG = LC_CTYPE = "C" LC_COLLATE = "C" LC_TIME = "C" LC_NUMERIC = "C" LC_MONETARY = "C" LC_MESSAGES = "C" LC_ALL = – mareoraft
Я думаю, что работает 'export LANG =" en_US.UTF-8 "' работал для меня. Я собираюсь подождать немного, прежде чем принимать ответ, потому что я хочу убедиться, что это правильно. – mareoraft
Да, установка переменной среды LANG для использования UTF-8, в зависимости от того, какой вариант подходит для вашей ОС, является правильным решением. – mareoraft