python - Bash重定向编码错误

标签 python bash redirect encoding

我正在将用 Python 编写的服务器的 stdio 重定向到一个文件:

python server.py &> file

输入通过使用 XMLRPC 库的 client.py 传输。 如果我传输 UTF-8 输入,我会在执行任何操作之前收到 UnicodeEncodeError。

这里的好奇心是:如果我不重定向 server.py 的标准输出,我就不会收到错误。

区域设置为 en_US.utf8,bash 正确显示 unicode,客户端对文本进行编码。我完全不知道发生了什么。

最佳答案

Python 代码无关紧要,我不会修改 SimpleXMLRPCServer 模块。它与 Bash 相关:

重定向创建的文件是 us-ascii,只有在插入 unicode 字符后才会变成 utf-8,这在这种情况下不起作用,因为它首先由 XMLRPC 模块处理,因此会发生 UnicodeDecodeError。

我尝试先创建用于重定向的文件,但即使使用 iconv -f us-ascii -t utf-8,如果文件中没有 unicode 序列,文件仍保留为 us-ascii。

我的想法是创建一个基本的“安静模式”而不修改不起作用的 Python 代码,因此我创建了一个 OptionParser 将 stdout 映射到 codecs.open("silent.log", "w", encoding = “utf-8”)。这很好用。

关于python - Bash重定向编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7753119/

相关文章:

python - moviepy subclip 函数中的名称错误

python - 使用 tensorflow 预测正弦与使用 keras 不同

arrays - 使用 bash 过滤输出并将过滤后的数据推送到数组中

linux - 如何根据某些字段对字符串进行排序

bash - FFmpeg - 将单个 .webm 视频分成多个视频(每个视频代表屏幕的一部分),指定行数和列数

.htaccess - 在 .htaccess 中将 .com 重定向到 .org

python - 如何在 ZeroMQ 中接收 N 个订阅者中的 1 个错过的消息?

python - 用基于字典的条目数组替换 Pandas DataFrame 列中的字符串

regex - 简单的 IIS 重写

windows - 仅在出错时解析命令的输出,并且仅使用 native 批处理命令