使用此代码:
#!/usr/bin/env python3
open("We’re-introducing-a-DNS-man.jpg", "wb")
我得到了一个错误:
^{pr2}$只有在通过Apache作为CGI脚本运行脚本时才会出现错误。脚本在命令行上运行时成功运行。在
我知道我在Apache错误地设置语言环境方面遇到了很多问题,到目前为止,我已经用下面3行代码修复了前面所有的问题。在
locale.setlocale(locale.LC_ALL, "en_GB.UTF-8")
sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach())
sys.stdin = codecs.getwriter('utf-8')(sys.stdin.detach())
但是,我不知道如何解决这个新问题,它似乎又与编码/区域设置有关。我能发现的唯一稍微可疑的事情是(这是添加了前面的行)的结果:
locale.getpreferredencoding(True)
ANSI_X3.4-1968
但是,如果我将参数改为False
,我得到UTF-8
。在
如何解决此编码问题?请注意,我已经调查过Apache,据我所知,它应该报告UTF-8,事实上它不是一个单独的问题,我无法在这方面取得任何进展。在
这不是文件内容/编码的问题,因为在python3中字符串显然是utf-8,并且程序运行时没有语法错误。所有显而易见的解决办法都曾尝试过,但都失败了。在
问题是open()函数似乎正在尝试将unicode字符串转换为ascii。问题是它为什么要尝试转换成ascii,以及如何停止它?在
把它改成
^{pr2}$您不需要
’
(右单引号)。请改用'
(引号)。在如果文件名是动态生成的,则需要在将其作为文件打开之前替换相同的名称。在
确保您的
.py
文件具有编码utf-8
,在记事本++中,您可以使用Encoding -> Convert to UTF-8
进行转换,然后在.py
文件的顶部添加尝试像上面一样添加
u"filename"
我如何用utf8字符编码修复错误
演示
相关问题 更多 >
编程相关推荐