【问题标题】:Have Code Change Terminal Settings Upon Load加载时有代码更改终端设置
【发布时间】:2016-08-07 20:17:06
【问题描述】:

我有一个程序要求我在运行代码之前输入chcp 65001set PYTHONIOENCODING=utf-8,否则它无法正确处理字符。有没有办法让代码在打开时自动执行此操作?每次都这样做很痛苦,而且很容易忘记。

【问题讨论】:

  • 如果您只需要为控制台 I/O 设置代码页 65001,那么您应该改用 win_unicode_console 包。宽字符控制台 API 在输入和输出上一直都能正常工作,这可以追溯到 NT 3.1。 OTOH,在旧代码页 API 中使用代码页 65001 不允许在任何版本的 Windows 中输入非 ASCII 文本,并且在 Windows 8 之前的输出中非常有问题。

标签: python windows cmd windows-console


【解决方案1】:

实际上,你应该可以在 Python 中做到这一点,但假设它的运行时有这个要求,你可以在使用脚本调用 python 之前在批处理文件中进行这些设置。例如,假设这个脚本被称为 pyutf8.bat

@echo off
setlocal
chcp 65001
set PYTHONIOENCODING=utf-8
python %1 %2 %3 %4 %5 %6 %7 %8 %9

然后你可以使用这个来运行你的脚本:

pyutf8 myscript.py

%1等是脚本的位置参数。您可以检查是否没有给出参数,使用它来提供默认参数。像这样的:

@echo off
setlocal
chcp 65001
set PYTHONIOENCODING=utf-8
if "%1"=="" goto default
python %1 %2 %3 %4 %5 %6 %7 %8 %9
goto :eof
:default
python myscript.py

进一步阅读:

【讨论】:

  • 我可以设置批处理以便它打开我的脚本吗?我已经设置了一个批处理文件在运行时打开两个脚本,所以也许这是可能的?
  • 当然 - 我写了一个通用脚本,但你可以组合。
  • 像魅力一样工作 :) 非常感谢。顺便说一句,这是什么语言? @echo 关闭
  • 这是 Windows 批处理文件(带有 2000 年引入的扩展名,例如 goto :eofsetlocal)。
  • 这是batch commands 的表格,显示了在 DOS、OS/2 和 NT 中可用的内容。请注意,setlocal 早在 80 年代就被添加到 OS/2 的 cmd.exe 中,但在 NT 4 和 Windows 2000 中进行了扩展。
猜你喜欢
  • 2012-05-01
  • 2021-09-04
  • 2016-07-14
  • 2017-07-27
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 1970-01-01
相关资源
最近更新 更多