Почему не работает русский текст в консоли ubuntu server 18?
Суть проблемы в том, что есть сайт, написанный на php. На одной из страниц вызывается python скрипт через popen. В скрипт передаются параметры с двумя строками с русским текстом. Если вывести args, то вывод будет таким:
Так и должно быть. Это строковое представление а не сама строка.
Нужно выводить на печать сами значения а не класс Namespace.
Как-то так: print(params.text1)
Проблема оказалась на стороне Python3.
Помогите понять в чем конкретно.
Вот код:
print("test: " + input_string)
# to lowercase
text = input_string.lower()
print(text)
# decode html
text = html.unescape(text)
print("html.unescape: " + text)
# replace
text = text.replace("\xc2\xa0", " ")
print("text.replace: " + text)
# Remove usernames
text = re.sub('@[^\s]+', '', text)
print("re.sub1: " + text)
# replace hashtags by just words
text = re.sub(r'#([^\s]+)', r'\1', text)
print("re.sub2: " + text)
# remove links
text = re.sub('((www\.[^\s]+)|(https?://[^\s]+))', '', text)
print("re.sub3: " + text)
text = re.sub(r'[^a-zа-я0-9ё\s-]', ' ', text)
print("re.sub4: " + text)
# correct all multiple white spaces to a single white space
text = re.sub('[\s]+', ' ', text)
print("re.sub5: " + text)
# Additional clean up : removing words less than 2 chars, and remove space at the beginning and teh end
text = re.sub(r'\W*\b\w{1,2}\b', '', text)
print("re.sub6: " + text)
text = text.strip()
Вот вывод:
test: В Совфеде поприветствовали решение Киева возобновить перевозки в Крым
В Совфеде поприветствовали решение Киева возобновить перевозки в Крым
html.unescape: В Совфеде поприветствовали решение Киева возобновить перевозки в Крым
text.replace: В Совфеде поприветствовали решение Киева возобновить перевозки в Крым
re.sub1: В Совфеде поприветствовали решение Киева возобновить перевозки в Крым
re.sub2: В Совфеде поприветствовали решение Киева возобновить перевозки в Крым
re.sub3: В Совфеде поприветствовали решение Киева возобновить перевозки в Крым
re.sub4:
re.sub5:
re.sub6:
Напомню, что код вызывается из php через popen. Не работает только на сервере. Локально все работает отлично.
Предположу что кодировка консоли не верно передается/устанавливается/настроена
можно попробовать прямую запись(кодировку придется подобрать) sys.stdout.write(bytes("Строка","utf-8"))