在 Windows 中更改 Python 3 中的“区域设置首选编码”

2024-01-02

我正在使用 Python 3(最近从 Python 2 切换而来)。我的代码通常在 Linux 上运行,但有时(不经常)在 Windows 上运行。根据 Python 3 文档open() https://docs.python.org/3/library/functions.html#open,文本文件的默认编码来自locale.getpreferredencoding() if the encoding未提供 arg。我希望这个默认值是utf-8对于我的一个项目,无论它运行在什么操作系统上(目前,Linux 上始终使用 UTF-8,但 Windows 上则不然)。该项目有很多次调用open()我不想添加encoding='utf-8'对他们所有人。因此,我想更改 Windows 中语言环境的首选编码,正如 Python 3 所看到的那样。

我找到了之前的一个问题 ”更改“区域设置首选编码” https://stackoverflow.com/questions/11514414/changing-the-locale-preferred-encoding”,它有一个已接受的答案,所以我认为我可以走了。但不幸的是,该答案中的建议命令及其第一个注释在 Windows 中都不适合我。具体来说,该已接受的答案及其第一个注释建议运行chcp 65001 and set PYTHONIOENCODING=UTF-8,我都尝试过。请从我的 cmd 窗口查看下面的文字记录:

> py -i
Python 3.4.3 ...
>>> f = open('foo.txt', 'w')
>>> f.encoding
'cp1252'
>>> exit()

> chcp 65001
Active code page: 65001

> py -i
Python 3.4.3 ...
>>> f = open('foo.txt', 'w')
>>> f.encoding
'cp1252'
>>> exit()

> set PYTHONIOENCODING=UTF-8

> py -i
Python 3.4.3 ...
>>> f = open('foo.txt', 'w')
>>> f.encoding
'cp1252'
>>> exit()

请注意,即使在执行了两个建议的命令之后,我打开的文件的编码仍然是cp1252而不是预期的utf-8.


从 python3.5.1 开始,这个 hack 看起来像这样:

import _locale
_locale._getdefaultlocale = (lambda *args: ['en_US', 'utf8'])

此后打开的所有文件都将采用默认编码utf8.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 中更改 Python 3 中的“区域设置首选编码” 的相关文章

  • Paramiko - 使用私钥连接 - 不是有效的 OPENSSH 私钥/公钥文件

    我正在尝试找到解决方案 但无法理解我做错了什么 在我的 Linux 服务器上 我运行了以下命令 ssh keygen t rsa 这产生了一个id rsa and id rsa pub file 然后我将它们复制到本地并尝试运行以下代码 s
  • 如何限制Django CreateView中ForeignKey字段的选择?

    我有一个沿着这些思路的模型结构 models py class Foo models Model class Bar models Model foo models ForeignKey Foo class Baz models Model
  • 如何从 Dockerfile 安装 Python 3.7 和 Pip

    我正在尝试构建基于 Ubuntu 18 04 的自定义 Docker 映像 Ubuntu 预装了 Python 3 6 但我想 1 安装 Python 3 7 2 将其设置为默认 Python 版本 这样就可以使用python代替pytho
  • Python igraph:从图中删除顶点

    我正在使用安然电子邮件数据集 并尝试删除没有 enron com 的电子邮件地址 即我只想拥有安然电子邮件 当我尝试删除那些没有 enron com 的地址时 一些电子邮件由于某些原因被跳过 下面显示了一个小图 其中顶点是电子邮件地址 这是
  • 如何使用 python urllib 在 HTTP/1.1 中保持活力

    现在我正在这样做 Python3 urllib url someurl headers HOST somehost Connection keep alive Accept Encoding gzip deflate opener urll
  • 如何在 Android 上的 HttpPost 中发送 unicode 字符

    我试图在我的应用程序中允许多语言支持 这会发出 HTTP post 来上传新消息 我需要做什么才能支持日语和其他非拉丁语语言 我的代码目前看起来像这样 note the msg string is a JSON message by the
  • 创建一个类似于 Tkinter 的表

    我希望创建类似于 Tkinter 中的表格的东西 但它不一定是这样的 例如 我想创建标题 Name1 Name2 Value 并在每个标题下面有几个空白行 然后 我希望稍后用我计算的值或名称的字符串值填充这些行 因此是标签 对于 Name2
  • 如何从页眉和/或页脚确定 PE 可执行文件的大小

    假设您有要雕刻的数据流或字节块 如何确定可执行文件的大小 PE 可执行文件格式中有许多标头 但是我使用哪些标头部分来确定 如果可能 可执行文件的总长度 这是文件格式的图片 如果PE文件格式良好 计算可以简化为 伪代码 size IMAGE
  • 如何在Vim中正确显示UTF-8字符

    我想要 需要编辑包含 UTF 8 字符的文件 并且我想使用 Vim 在我被指责问以前问过的问题之前 我已经阅读了有关编码 文件编码 s 术语编码等的 Vim 文档 用 google 搜索了该主题 并阅读这个问题 https stackove
  • 获取列表中倒数第二个元素[重复]

    这个问题在这里已经有答案了 我可以通过以下方式获取列表的倒数第二个元素 gt gt gt lst a b c d e f gt gt gt print lst len lst 2 e 有没有比使用更好的方法print lst len lst
  • 为什么我用 beautifulSoup 刮的时候有桌子,但没有 pandas

    尝试抓取条目页面转换为制表符分隔格式 主要拉出序列和 UniProt 登录号 当我跑步时 url www signalpeptide de index php sess m listspdb bacteria s details id 10
  • 如何列出 python PDB 中的当前行?

    在 perl 调试器中 如果重复列出离开当前行的代码段 可以通过输入命令返回到当前行 点 我无法使用 python PDB 模块找到任何类似的东西 如果我list如果我自己离开当前行并想再次查看它 似乎我必须记住当前正在执行的行号 对我来说
  • select() 可以在 Windows 下使用 Python 中的文件吗?

    我正在尝试在 Windows 下运行以下 python 服务器 An echo server that uses select to handle multiple clients at a time Entering any line o
  • Airflow Python 单元测试?

    我想为我们的 DAG 添加一些单元测试 但找不到任何单元测试 有 DAG 单元测试框架吗 有一个端到端的测试框架存在 但我猜它已经死了 https issues apache org jira browse AIRFLOW 79 https
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • Flask WTForms 使用变量自动填充 StringField

    我有一个表格 我想用上一页收到的信息自动填充一些字段 但如果他们想调整它 它需要是可更改的 我正在为我的 SelectField 使用动态创建的列表 但添加 StringField 并不成功 请参阅下面的我的代码 forms py clas
  • 让 Jenkins 对远程用户不可见

    我的本地 Windows 设备上有一个 Jenkins 服务器 但我想让它对外界不可见 有关服务器的办公室规则 明显且不隐晦的 效果令人满意的方法是设置防火墙规则来阻止对其端口的传入访问 但我认为必须有一个 Jenkins 设置来阻止它向除
  • 如何禁止 celery 中的 pickle 序列化

    Celery 默认使用 pickle 作为任务的序列化方法 如中所述FAQ http ask github com celery faq html isn t using pickle a security concern 这代表一个安全漏
  • 如何将列表字典写入字符串而不是 CSV 文件?

    This 堆栈溢出问题 https stackoverflow com questions 37997085 how to write a dictionary of lists to a csv file将列表字典写入 CSV 文件的答案
  • 在 Python 模块中使用 InstaLoader

    我正在尝试使用 Instaloader 下载与主题标签相关的照片以进行图像分析 我在GitHub存储库中找到了一个全面的方法 如何在终端中执行它 但是 我需要将脚本集成到Python笔记本中 这是脚本 instaloader no vide

随机推荐

  • 传单 - 防止加载 MaxBounds 之外的图块

    我在尝试加载不存在且超出 MaxBounds 的图块时遇到传单问题 jsfiddle 复制我的图块集的问题 https jsfiddle net f2Ljzpbh 1 最后还尝试了以下方法 map setBounds new L LatLn
  • React Native WebView 中的身份验证

    我有一个工作的反应本机应用程序 我想通过添加一个显示的选项卡以灵活的方式扩展它WebView 在这里 用户将能够看到他们的个人资料信息 因此我需要能够对每个用户进行身份验证 我认为这不会很难实现 因为用户已经在应用程序中进行了身份验证 但显
  • Spark 将 DataFrame 作为 HTTP Post 请求的正文发送

    我有一个数据框 我想将其作为正文发送HTTP Post要求 什么是最好的Sparky怎么办 如何控制HTTP请求的数量 如果记录数量变大 有没有办法将发送数据帧拆分为多个 HTTP Post 调用 假设我的数据框是这样的 user id c
  • isInitialized - 此时无法访问 Lateinit var 的支持字段

    我正在尝试检查是否lateinit属性已初始化 在 Kotlin 1 2 中 我们现在有isInitialized方法 当我在声明 Lateinit 属性的类中执行此操作时 它会起作用 但是当我尝试从另一个类调用它时 我收到以下警告 此时无
  • jQuery 窗口滚动事件。每滚动 XX 像素

    我正在使用优秀的 jQuery Reel 插件 http jquery vostrel cz reel http jquery vostrel cz reel 对于一个项目 我想绑定到窗口滚动事件 因此当用户向下滚动页面时 插件前进 1 帧
  • 如何使用 jQuery 滚动到某个元素?

    我希望页面滚动到页面顶部的 div 我有页面其他部分的按钮 但是当我滚动到底部并单击按钮时 这不起作用 它不会转到页面顶部 这是代码笔 https codepen io Filizof pen xygWyp editors 1010 htt
  • 等待容器端口打开超时(本地主机端口:[32773] 应该正在侦听)

    我正在尝试使用https github com testcontainers testcontainers scala https github com testcontainers testcontainers scala这是固有的htt
  • QMYSQL可用但无法加载

    QSqlDatabase QMYSQL 驱动程序未加载 QSqlDatabase 可用驱动程序 QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 我挣扎了两天才弄清楚 我做了我的研究相信我 这
  • 在 dplyr tidyverse 中按组对不同行数进行采样

    我想按组从数据框中采样行 但问题是 我想根据另一个表中的数据对不同数量的记录进行采样 这是我的可重现数据 df lt data frame Stratum rep c High Medium Low 10 id c 1 30 Value r
  • ActiveJob::SerializationError - 不支持的参数类型:时间/日期时间

    我正在使用 Rails 5 和 ActiveJob 来处理后台任务 我正在尝试传递一个序列化的对象as json到我的工作 但我收到以下错误 ActiveJob SerializationError Unsupported argument
  • 如何将 Passport 和 Angular-UI 路由结合起来

    我想知道如何将 Angular UI Routing 与 Passport 结合起来 我找到的所有示例都使用 node js 路由 var routerApp angular module routerApp ui router route
  • 使用 json_modify.py 更改 JSON 键名称

    如何使用更改 JSON 键名称json 修改 py https github com integr8ly installation blob master library json modify py 我有以下数组 我想更改public i
  • System.Data.OracleClient 不适用于 64 位 Oracle 客户端

    我设计了一个 C 应用程序来连接到 Oracle 数据库并更改架构用户密码 我的参考程序集是来自以下位置的 System Data OracleClient C Program Files x86 Reference Assemblies
  • Rails 4 中的 has_many 'conditions' 选项相当于什么?

    有人能告诉我在 Rails 4 中执行以下行的等效方法是什么吗 has many friends through gt friendships conditions gt status accepted order gt first nam
  • MSBuild - 如何复制可能存在或不存在的文件?

    我遇到一种情况 我需要在 MSBuild 脚本中复制一些特定文件 但它们可能存在也可能不存在 如果它们不存在也没关系 我就不需要它们了 但标准
  • 在未知的 NSMutableArray 深度中搜索值

    好吧 我问了错误的问题 所以我编辑了原来的问题 我将数组存储在数组中 以及 NSDictionaries 它是一种实用程序类型的应用程序 没有固定的结构 用户可以根据需要输入嵌套信息 理想情况下 我需要一种方法来滚动浏览给定参数 一种类的类
  • Cordova Android 状态栏设置为透明

    我正在尝试使用下面的这个插件将状态栏设置为透明 但我无法实现它 我可以将其更改为不同的颜色 但不透明 https github com apache cordova plugin statusbar https github com apa
  • 下载旧版本的 Google App Engine SDK

    在哪里可以找到下载旧版 GAE SDK 例如 1 9 15 我需要找出覆盖范围 也许使用第 3 方 API 该 API 与最新版本不能很好地配合 这取决于相应的 SDK 是否仍受官方支持 这两种类型都可以在appengine sdks ht
  • 使用文本框输入在画布上移动对象

    我有一个画布 可以在上面添加图层 这些图层可以移动 选择 旋转 调整大小等 在画布下方 我显示图层的属性 x y 宽度 高度 我想做的是 当我更改包含 x 和 y 坐标的文本框中的值时 图层应该重新定位到我输入的坐标 我已经尝试了几件事 但
  • 在 Windows 中更改 Python 3 中的“区域设置首选编码”

    我正在使用 Python 3 最近从 Python 2 切换而来 我的代码通常在 Linux 上运行 但有时 不经常 在 Windows 上运行 根据 Python 3 文档open https docs python org 3 libr