Инструмент для преобразования источника кода от кодовой страницы до UTF-8?

Вы не можете использовать consoleHandler() здесь, потому что нет консоли . Ядро IPython - это «безголовый» дочерний процесс, который выполняет код по запросу, управляемый внешним интерфейсом Jupyter.

Чтобы прервать работающее ядро ​​IPython, интерфейс Jupyter использует сигнал SIGINT. Это делается как на POSIX, так и на Windows; в Windows Jupyter использует дополнительную инфраструктуру, построенную вокруг CreateEventA , SetEvent и WaitForMultipleObjects для достижения того же результата, что и вызов POSIX os.killpg(PID, SIGINT); отдельный поток опрашивает событие и запускает сигнал SIGINT в основном потоке.

Обратите внимание, что ядро ​​IPython явно восстанавливает обработчик сигналов Python по умолчанию для каждого сообщения, которое оно обрабатывает. См. Реализации ipykernel.kernelbase.Kernel для методов pre_ и post_handler_hook :

 self.saved_sigint_handler = signal(SIGINT, default_int_handler)

и

 signal(SIGINT, self.saved_sigint_handler)

Эти два перехвата выполняются до и после каждый обработчик сообщений (то есть для каждое сообщение, отправляемое внешним интерфейсом процессу ядра , включая сообщения выполнения ).

Именно signal.default_int_handler вызывает KeyboardInterrupt в основном потоке Python. Если ваш код должен обнаруживать прерывания, он должен будет регистрировать свой собственный обработчик signal каждый раз, когда IPython запускает ячейку.

В качестве дополнительного примечания: автономный интерактивный интерпретатор Python также не использует SetConsoleCtrlHandler для обнаружения прерываний клавиатуры ; единственное место, которое используется в исходном коде Python, находится в модуле запуска py , и только тогда, чтобы глушить управляющие коды с помощью обработчика, который всегда возвращает TRUE. Вместо этого Python использует Windows, посылающую сигнал SIGINT всем подключенным процессам консоли для активного окна консоли .

5
задан Community 23 May 2017 в 12:08
поделиться

2 ответа

В мире Unix утилиту называют iconv.

Не уверенный, если существует эквивалентные окна.

7
ответ дан 14 December 2019 в 01:19
поделиться

Можно попросить, чтобы VS 2008 открылся, файл с кодированием (нажмите Arrow около кнопки Open в открытом диалоговом окне),

Или можно изменить региональные настройки для добавления российского региона как значения по умолчанию ;)

2
ответ дан 14 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

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