本文将带您了解关于致命的python错误的原因可能是什么:initfsencoding:无法加载文件系统编解码器?的新内容,另外,我们还将为您提供关于c#–Encoding.UTF8.GetStrin
本文将带您了解关于致命的python错误的原因可能是什么:initfsencoding:无法加载文件系统编解码器?的新内容,另外,我们还将为您提供关于c# – Encoding.UTF8.GetString和Encoding.UTF8.GetBytes彼此不相反的原因是什么?、pyinstaller制作的可执行文件遇到“致命的python错误:initfsencoding”、Python 3 UnicodeEncodeError:’ascii’编解码器无法编码字符、Python 3:os.walk()文件路径UnicodeEncodeError:'utf-8'编解码器无法编码:不允许代理的实用信息。
本文目录一览:- 致命的python错误的原因可能是什么:initfsencoding:无法加载文件系统编解码器?
- c# – Encoding.UTF8.GetString和Encoding.UTF8.GetBytes彼此不相反的原因是什么?
- pyinstaller制作的可执行文件遇到“致命的python错误:initfsencoding”
- Python 3 UnicodeEncodeError:’ascii’编解码器无法编码字符
- Python 3:os.walk()文件路径UnicodeEncodeError:'utf-8'编解码器无法编码:不允许代理
致命的python错误的原因可能是什么:initfsencoding:无法加载文件系统编解码器?
我正在使用Python 3.7(64位)并安装了 cx_Freeze, 用于将.py转换为.exe。
我使用以下命令提示符将Python脚本转换为可执行文件:
python [filename] build
它成功构建了可执行文件。但是当我执行我的EXE文件时,我只是得到输出:
致命的python错误:initfsencoding:无法加载文件系统编解码器
ImportError:’encoding’
当前线程0X000013f8中的无效标志1530052318:
如何解决它并使用 cx_Freeze 成功制作可执行文件?
答案1
小编典典固定在4c18633中。问题在于,对于python
3.7的x64版本,由于的类config而无法正常工作freezer.py
。您需要进入cx_Freezer
安装文件夹。如果您有虚拟环境,请转到环境文件夹\lib\site-packages\cx_Freeze
,找到freezer.py
并添加在提交中找到的代码。
您可以在GitHub上找到补丁
c# – Encoding.UTF8.GetString和Encoding.UTF8.GetBytes彼此不相反的原因是什么?
在以下示例中,myOriginalBytes和asBytes不相等,即使它们的长度不同.谁能解释我错过了什么?
byte[] myOriginalBytes = GetRandomByteArray(); var asstring = Encoding.UTF8.GetString(myOriginalBytes); var asBytes = Encoding.UTF8.GetBytes(asstring);
解决方法
让我们来看一个具体而简单的例子:单个字节0xff.这不是任何文本的有效UTF-8编码.所以如果你有:
byte[] bytes = { 0xff }; string text = Encoding.UTF8.GetString(bytes);
…你最终将文本作为单个字符,U+FFFD,“Unicode替换字符”,用于表示解码二进制数据时出错.对于任何无效序列,您最终会得到替换字符 – 例如,如果以0x80开头,则会获得相同的文本.显然,如果多个二进制输入被解码为相同的文本输出,则它不可能是完全可逆的变换.
如果您有任意二进制数据,则不应使用Encoding从中获取文本 – 您应该使用Convert.ToBase64String或者hex.编码用于自然文本的数据.
如果你走向相反的方向,像这样:
string text = GetRandomText(); byte[] bytes = Encoding.UTF8.GetBytes(text); string text2 = Encoding.UTF8.GetString(bytes);
…我希望text2等于文本,除了你有无效文本的奇怪情况,例如与“一半”代理对.
pyinstaller制作的可执行文件遇到“致命的python错误:initfsencoding”
我可以通过崇高的文本在我的PC上运行python(python 3.7)程序。该程序使用tkinter和sqlite3。pyinstaller不支持它们吗?
运行它时出现的错误(只需双击在中创建的文件dist
:
Fatal Python error: initfsencoding: unable to load the file system codec
zipimport.ZipImportError: can't find module 'encodings'
如果有人对此有任何经验,将不胜感激!
如果问题可能出在代码本身中,我可以发布代码。
Python 3 UnicodeEncodeError:’ascii’编解码器无法编码字符
我有一个只有一个命令的简单脚本:
#!/usr/bin/env python3 print("Příliš žluťoučký kůň úpěl ďábelské ódy.") # Text in Czech
当我尝试运行此脚本时:
python3 hello.py
我收到这条消息:
Traceback (most recent call last): File "hello.py",line 2,in <module> print("P\u0159\xedli\u0161 \u017elu\u0165ou\u010dk\xfd k\u016fn \xfap\u011bl \u010f\xe1belsk\xe9 \xf3dy.") UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
我正在使用Kubuntu 16.04和Python 3.5.2.
当我尝试这个:导出PYTHONIOENCODING = utf-8它只能暂时工作.下次我打开bash时遇到了同样的错误.
根据https://docs.python.org/3/howto/unicode.html#the-string-type
Python源代码的默认编码是UTF-8.
所以我把源文件保存为id UTF-8,Konsole设置为UTF-8但我仍然得到错误!
即使我补充说
# -*- coding: utf-8 -*-
从一开始它什么都不做.
另一个奇怪的事情:当我只使用python而不是python3运行它时,它可以工作.如何在Python 2.7.12中工作而不是在3.5.2中工作?
永久解决这个问题的任何想法?谢谢.
解决方法
当我运行语言环境时,输出是:
LANG=C LANGUAGE= LC_CTYPE="C" LC_NUMERIC=cs_CZ.UTF-8 LC_TIME=cs_CZ.UTF-8 LC_COLLATE=cs_CZ.UTF-8 LC_MONETARY=cs_CZ.UTF-8 LC_MESSAGES="C" LC_PAPER="C" LC_NAME="C" LC_ADDRESS="C" LC_TELEPHONE="C" LC_MEASUREMENT=cs_CZ.UTF-8 LC_IDENTIFICATION="C" LC_ALL=
此“C”是使用ANSI charmap的默认设置.这就是问题所在.运行locale charmap给了我:ANSI_X3.4-1968,它不能显示非英文字符.
我用这个Ubuntu documentation site解决了这个问题.
我将这些行添加到/ etc / default / locale:
LANGUAGE=cs_CZ.UTF-8 LC_ALL=cs_CZ.UTF-8
然后,您必须重新启动会话(注销并进入)才能应用这些设置.
运行语言环境现在返回此输出:
LANG=C LANGUAGE=cs LC_CTYPE="cs_CZ.UTF-8" LC_NUMERIC="cs_CZ.UTF-8" LC_TIME="cs_CZ.UTF-8" LC_COLLATE="cs_CZ.UTF-8" LC_MONETARY="cs_CZ.UTF-8" LC_MESSAGES="cs_CZ.UTF-8" LC_PAPER="cs_CZ.UTF-8" LC_NAME="cs_CZ.UTF-8" LC_ADDRESS="cs_CZ.UTF-8" LC_TELEPHONE="cs_CZ.UTF-8" LC_MEASUREMENT="cs_CZ.UTF-8" LC_IDENTIFICATION="cs_CZ.UTF-8" LC_ALL=cs_CZ.UTF-8
并运行locale charmap返回:
UTF-8
Python 3:os.walk()文件路径UnicodeEncodeError:'utf-8'编解码器无法编码:不允许代理
如何解决Python 3:os.walk()文件路径UnicodeEncodeError:''utf-8''编解码器无法编码:不允许代理?
在Linux上,文件名只是“一堆字节”,不一定以特定的编码进行编码。Python 3尝试将所有内容转换为Unicode字符串。通过这样做,开发人员想出了一种方案,可以将字节字符串转换为Unicode字符串,然后又将其转换回去而不会丢失,也不会知道原始编码。他们使用部分替代来编码“坏”字节,但是普通的UTF8编码器在打印到终端时无法处理它们。
例如,这是一个非UTF8字节的字符串:
>>> b''C\xc3N''.decode(''utf8'',''surrogateescape'')
''C\udcc3N''
它可以与Unicode相互转换而不会丢失:
>>> b''C\xc3N''.decode(''utf8'',''surrogateescape'').encode(''utf8'',''surrogateescape'')
b''C\xc3N''
但是无法打印:
>>> print(b''C\xc3N''.decode(''utf8'',''surrogateescape''))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: ''utf-8'' codec can''t encode character ''\udcc3'' in position 1: surrogates not allowed
您必须弄清楚要使用非默认编码的文件名要做什么。也许只是将它们编码回原始字节,然后用未知替换将其解码。使用它进行显示,但保留原始名称以访问文件。
>>> b''C\xc3N''.decode(''utf8'',''replace'')
C�N
os.walk
也可以采用字节字符串,并返回字节字符串而不是Unicode字符串:
for p,d,f in os.walk(b''.''):
然后,您可以根据需要进行解码。
解决方法
这段代码:
for root,dirs,files in os.walk(''.''):
print(root)
给我这个错误:
UnicodeEncodeError: ''utf-8'' codec can''t encode character ''\udcc3'' in position 27: surrogates not allowed
如何遍历文件树而不会得到像这样的有害字符串?
今天关于致命的python错误的原因可能是什么:initfsencoding:无法加载文件系统编解码器?的介绍到此结束,谢谢您的阅读,有关c# – Encoding.UTF8.GetString和Encoding.UTF8.GetBytes彼此不相反的原因是什么?、pyinstaller制作的可执行文件遇到“致命的python错误:initfsencoding”、Python 3 UnicodeEncodeError:’ascii’编解码器无法编码字符、Python 3:os.walk()文件路径UnicodeEncodeError:'utf-8'编解码器无法编码:不允许代理等更多相关知识的信息可以在本站进行查询。
本文标签: