Как ` :: OutputEncoding / InputEncoding` с Python?
Под Powershell v5, Windows 8.1, Python 3. Почему это не удается и как исправить?
[system.console]::InputEncoding = [System.Text.Encoding]::UTF8; [system.console]::OutputEncoding = [System.Text.Encoding]::UTF8; chcp; "import sys print(sys.stdout.encoding) print(sys.stdin.encoding) sys.stdout.write(sys.stdin.readline()) " | sc test.py -Encoding utf8; [char]0x0422+[char]0x0415+[char]0x0421+[char]0x0422+"`n" | py -3 test.py
печатает:
- Как реализовать потоки для запуска двух команд оболочки bash в python?
- Как запустить сценарий Python портативно, не указывая его полный путь
- Как установить lxml на OS X Leopard без использования MacPorts или Fink?
- как проверить, какая версия nltk, scikit learn установлена?
- Как добавить расширения файлов на основе типа файла в Linux / Unix?
Active code page: 65001 cp65001 cp1251 п»ї????
- как перенаправить полный вывод скрипта
- Цитировать Цитировать POSIX shell специальные символы на выходе Python
- Скрипт для тестирования Mobile-Friendly
- Правильно ли это запустить сценарий оболочки внутри Python?
- Vim запуск ярлыка
2 Solutions collect form web for “Как ` :: OutputEncoding / InputEncoding` с Python?”
Вы передаете данные в Python; в этот момент stdin
Python больше не привязан к TTY (вашей консоли) и не догадается, что такое кодировка. Вместо этого используется локаль системы по умолчанию; на вашей системе, которая является cp1251 (кодовая страница на основе Windows Latin-1).
Установите PYTHONIOENCODING
среды PYTHONIOENCODING
для переопределения:
PYTHONIOENCODING
Если это задано перед запуском интерпретатора, оно переопределяет кодировку, используемую для stdin / stdout / stderr, в синтаксисеencodingname:errorhandler
. И имяencodingname
и части:errorhandler
являются необязательными и имеют то же значение, что и вstr.encode()
.
Кажется, что PowerShell не поддерживает переменные окружения командной строки, как это делают оболочки UNIX; проще всего просто установить переменную:
Set-Item Env:PYTHONIOENCODING "UTF-8"
или даже
Set-Item Env:PYTHONIOENCODING "cp65001"
поскольку кодовая страница Windows UTF-8, по-видимому, не совсем UTF-8, в зависимости от версии Windows и от перенаправления или без перенаправления труб.
Почему бы не включить CPython в powershell ?! CPython настолько прост для встраивания, и powershell очень хорош REPL, чтобы играть с .NET и COM-объектами . Вот простое введение в использование pythonnet из PowerShell. Обратите внимание, как кодирование автоматически распространяется с powershell на python.
Windows PowerShell Copyright (C) 2015 Microsoft Corporation. All rights reserved. PS C:\Users\denfromufa> [system.console]::InputEncoding = [System.Text.Encoding]::UTF8; PS C:\Users\denfromufa> [system.console]::OutputEncoding = [System.Text.Encoding]::UTF8; PS C:\Users\denfromufa> [Reflection.Assembly]::LoadFile("C:\Python\Miniconda3_64b\Lib\site-packages\Python.Runtime.dll") GAC Version Location --- ------- -------- False v4.0.30319 C:\Python\Miniconda3_64b\Lib\site-packages\Python.Runtime.dll PS C:\Users\denfromufa> $gil = [Python.Runtime.Py]::GIL() PS C:\Users\denfromufa> $sys=[Python.Runtime.Py]::Import("sys") PS C:\Users\denfromufa> $sys.stdin.encoding.ToString() cp65001 PS C:\Users\denfromufa> $sys.stdout.encoding.ToString() cp65001 PS C:\Users\denfromufa> $gil.Dispose() PS C:\Users\denfromufa> [Python.Runtime.PythonEngine]::Shutdown() PS C:\Users\denfromufa>
- Возможно ли, чтобы Python интерпретировал сценарий по строкам и генерировал вывод как будто из интерактивной оболочки?
- Как запустить скрипт perl с несколькими аргументами из php
- Команда sed запускается с использованием os.system () или subprocess.call () оставляет файл csv без разделителя
- живой вывод из команды подпроцесса
- Как изменить текущий каталог из сценария python?
- Почему хеш MD5, созданный Python, отличается от созданного с помощью echo и md5sum в оболочке?
- Нет графического окна в matplotlib в Linux Shell Windows 10
- Запустить команду оболочки с входными перенаправлениями из python 2.4?
- Отправка сообщений с помощью Telegram - API или CLI?
- Python Script не работает в crontab, вызывающем pysaunter
- Как передать вызов подпроцесса в текстовый файл?
- Относительный shebang: как написать исполняемый скрипт, на котором запущен переносимый интерпретатор