在Windows 2008服务器上使用web2py我遇到以下问题
我正在从json创建csv文件,当将列表写入文件时,我收到以下错误。它在csv writerow上崩溃了
<type 'exceptions.UnicodeEncodeError'> 'ascii' codec can't encode character u'\\u010c'
它在我的电脑上运行正常。 Windows 7但在服务器上我有编码问题
有什么建议吗?谢谢
我创建文件的代码如下
dataDict = json.loads(data.replace("'", "\""))
path = path
scriptName = os.path.join(path, id + 'script.txt')
file = open(scriptName, 'wb')
output = csv.writer(file, delimiter='\t')
##Month hours
file.write("begin month_hours \r\n")
file.write("delavec mesec month_hours_min month_hours_max\r\n")
for rec in dataDict["mandatory"]:
output.writerow(rec)
file.write("\r\nend month_hours \r\n")
答案 0 :(得分:5)
JSON字符串始终是Unicode值,在Python 2中需要在写入CSV文件时进行编码。如果您没有明确地这样做,Python将使用ASCII编解码器。如果您的所有数据都包含ASCII范围内的文本,但是当您遇到超出该范围的数据时失败,那就没问题了。
选择不同的编码并明确编码; UTF-8是一个很好的编码选择:
for rec in dataDict["mandatory"]:
output.writerow([unicode(c).encode('utf8') for c in rec])
我首先将所有值转换为unicode()
,以防您的数据中的数据不是unicode()
;数字或布尔值或None
例如。然后将结果显式编码为UTF-8。