我们正在使用Django 1.5创建一个网站。我们在服务器上存储了几个大文本文件,这些文本文件将通过网页呈现,具体取决于国家/地区。问题是这些文本文件包含版权符号(c),并且我们不断收到“非ascii字符”错误,并且文本未加载。有没有人对如何成功地将一个转换为另一个有任何建议?
选择代码:
#Open file, where filename is our variable
with open(filename) as f:
#Append (It is in a loop, and we are only passing 1 document variable
document=document + f.read()
f.close
我们尝试过使用:
标记安全(在django)
smart_str
.encode('utf8')
但无济于事,页面继续如此吐出一个错误,说有一个无法转换的ascii字符。有任何想法吗?
这是我们不断得到的错误
UnicodeDecodeError at /<website-hidden>/
'ascii' codec can't decode byte 0x92 in position 950: ordinal not in range(128)
答案 0 :(得分:2)
问题是版权符号不是严格的ASCII字符,因为它的第8位(最重要)位是1.ASCII仅使用7位。您需要告诉python该文件不是ASCII数据,而是“扩展ASCII”,“ISO 8859-1”或“ISO Latin-1”数据。
因此,您需要将其作为字节读取,然后使用该解码将其转换为字符串。然后,您可以将其重新编码为您想要的任何内容,包括UTF-8。
对此的准确处理取决于您使用的是python 2.x还是3.x。
参考 http://www.ascii-code.com/ https://en.wikipedia.org/wiki/Extended_ASCII
答案 1 :(得分:1)
重新启动计算机和eclipse似乎可以解决问题。也许这是缓存的问题?无论哪种方式,奇怪的错误......