【发布时间】:2025-12-15 12:20:06
【问题描述】:
我有一个 python 文件,它读取用户提供的文件,对其进行处理,并以闪存卡格式提出问题。该程序适用于英文 txt 文件,但在尝试处理法文文件时遇到错误。
当我第一次遇到错误时,我正在使用 windows 命令提示符窗口并运行python cards.py。在输入法文文件时,我立即得到了UnicodeEncodeError。经过一番挖掘,我发现这可能与我使用的是 cmd 窗口有关。所以我尝试使用 IDLE。我没有收到任何错误,但我会收到奇怪的字符,例如 œ 和 à 和 ®。
经过进一步研究,我发现一些documentation 指示在我的代码的open(file) 部分中使用encoding='insert encoding type'。在 IDLE 中再次运行程序后,它似乎将问题最小化,但我仍然会得到一些奇怪的字符。在 cmd 中运行时,它不会立即中断,但最终会在遇到未知字符时中断。
我的问题:我应该如何实现以确保程序可以处理文件中的所有字符(给定任何语言)以及为什么 IDLE 和命令提示符处理文件的方式不同?
编辑:我忘了提到我最终使用了 utf-8,它给出了我描述的结果。
【问题讨论】:
-
请注意,您可以在命令提示符下发出命令
chcp 65001以切换到 Unicode (UTF-8) 代码页。 -
您没有提到您使用的是 python 2 还是 3.. 在 unicode 方面,两者之间存在很大差异。简而言之,您可能会发现 3. 使用起来更方便。
-
@fzzylogic 我没有直接说,正确,但我包含了 python-3.x 标记。谢谢
-
@Basic
chcp 65001只应被视为快速修复。它不完全支持 utf-8 并且不允许 Python 正确接收多字节字符
标签: python python-3.x unicode utf-8