gpt4 book ai didi

linux - 如何将带有国家字符的Linux Python 3.4代码转换成windows中的可执行代码

转载 作者:可可西里 更新时间:2023-11-01 10:35:45 25 4
gpt4 key购买 nike

我的母语是波兰语。

我有在 Linux 上编写的 Python 3.4 程序。该程序主要处理文本,波兰语文本。所以当然,变量名没有任何特殊字符,但有时我会在其中放入一些带有波兰字符的字符串,用户将从键盘输入一些带有波兰字符的字符串,我的程序从文件中读取,在那里我得到带有波兰字符的字符串.

在 Linux 上一切正常。我没有考虑编码,它只是工作。但现在我想让它在 Windows 上运行。你能帮我理解,我应该怎么做才能实现这种转变吗?

或者也许有一些变通办法——我只需要有 Windows 可执行文件。完美的方法是“Pyinstaller”,但它只适用于 python 2.7,不适用于 3.4。这就是为什么我想让它在 Windows 上工作,并在 VirtualBox 中用 py2exe 编译成可执行形式。但也许有人知道在 Linux 中实现这一点的方法,如果没有这种编码问题,那就太好了。

如果不是,我回到我的问题。我试图将我在 gedit 中的 python 脚本转换为 ISO 或 CP1250 或 1252,我在文件标题中写下了我正在使用的编码,它实际上工作了一点,现在我的 Windows 错误将我以我阅读的文本形式插入到我的文件中一些数据,所以我也转换了它们......但它没有用。

所以我决定,现在不再是盲目的试验了,我需要寻求帮助,我需要了解在 windows 上使用什么编码,在 linux 上使用什么编码,将一种编​​码转换成另一种编码的最佳方法是什么,以及如何让程序以正确的方式读取字符。

最好的方法是——我猜——不改变编码中的任何东西,而只是让 windows python 理解我正在使用的编码。这可能吗?

我的问题的完整答案会很棒,但任何能给我指明正确方向的东西也会对我有很大帮助。


好的。我不确定,如果我理解您在评论中的回答,但尝试通过邮件为自己发送文本,将其在 virtualbox 中复制到记事本中并另存为 utf_8。仍然收到此消息:

C:\Users\python\Documents>py pytania.py
Traceback (most recent call last):
File "pytania.py", line 864, in <module>
start_probny()
File "pytania.py", line 850, in start_probny
utworzenie_danych()
File "pytania.py", line 740, in utworzenie_danych
utworzenie_pytania_piwo('a')
File "pytania.py", line 367, in utworzenie_pytania_piwo
for line in f: # Czytam po jednej linii
File "C:\Python34\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 1134: cha
racter maps to <undefined>

最佳答案

正如 Zero Piraeus 在评论中提到的:Python 3.x 的默认源代码编码是 UTF-8,无论它在什么平台上运行......

如果您遇到问题,那可能是因为您的源代码编码不正确。您应该只使用 UTF-8(即使 PEP 0263 -- Defining Python Source Code Encodings 允许更改它)。

您提供的错误信息很清楚:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 1134

Python 当前期望使用 UTF8(因为“UnicodeDecodeError”!),但它遇到了非法字符(0x9d 不是有效字符,是 UTF8)。要诊断问题,请使用 iconv(1)在 Linux 机器上,为了检测错误购买做一个虚拟转换:

iconv -f utf8 -t iso8859-2 -o /dev/null < test.py

您可以尝试通过创建一个非常简单的 python 文件来重现该问题,通常是:print "test €uro encoding"

关于linux - 如何将带有国家字符的Linux Python 3.4代码转换成windows中的可执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27901586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com