以下是我的代码的一部分,它给了我错误..
# get all browser products
raw_json_file = open( script_dir + "raw_json.js", 'r' )
raw_json = raw_json_file.read()
all_str = raw_json[ raw_json.find("{"): ]
all_obj = json.loads(all_str)
browser_products = all_obj["categories"]["6"]["products"]
我在这里得到的错误如下:
C:\Python34>python parse.py 8.3.4
argument is 8.3.4
Traceback (most recent call last):
File "parse.py", line 42, in <module>
raw_json = raw_json_file.read()
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 0x90 in position 563011: character maps to <undefined>
请告诉我如何解决此错误。
答案 0 :(得分:2)
在Python 3中使用jQuery(document).ready(function(){
jQuery(".test-popup-link").click(function(e) {
var overlay = jQuery('<div align="center" id="overlay"><img id="imgBig" src="" /></div>');
overlay.appendTo(document.body);
//jQuery('#overlay').load(this.href);
var imgs = (this.href);
jQuery('#overlay #imgBig').attr("src", imgs);
// assign `click` event to `img` element having `src` set to `imgs`
jQuery("img[src=" + imgs + "]").on("click", function() {
// do stuff
// e.g., remove or hide the overlay div
$(this).parent().remove();
});
return false;
});
});
时,默认情况下会假定文件是在某些系统默认情况下编码的,在您的情况下,它是 Windows open()
编码。也许该文件实际上是以其他方式编码的,例如非常常见的 cp1252
。
你可以尝试
UTF-8
看看是否如此,但实际上你需要询问提供文件的人是谁使用的。
答案 1 :(得分:0)
执行此操作的最佳方法是尝试编码并解码为utf-8
。
# get all browser products
raw_json_file = open( script_dir + "raw_json.js", 'r' )
raw_json = bytes(raw_json_file.read()).decode()
all_str = raw_json[ raw_json.find("{"): ]
all_obj = json.loads(all_str)
browser_products = all_obj["categories"]["6"]["products"]
#Do this to the strings you get from the JSON file directly. Then, use them as needed.
计算机可以为某些字符提供不同的代码和值,其中一个代码集为unicode
。但是,这些不是普通字符串,因此在使用它们之前必须在Python中进行转换。请尝试查看This Article以获取更多信息。
此外,您的文件不是JSON文件,而是用于开发网站的JavaScript编程语言文件。如果您没有成功,请确认您的文件的有效性。如果您自己制作文件,那么您不必担心。更改扩展名只是告诉计算机用于打开文件的程序的一种方法。
当我decode()
时,它会自动从utf-8
特征解码。如果您不知道文件的编码是什么,请尝试使用pip安装chardet
模块,并参阅chardet documentation了解用法教程。一旦你发现(有时,如果你的文件使用不同的字符集,chardet将无法工作,你将不得不将所有编码更改为一个统一编码)编码,请将其作为字符串参数添加到decode()
。
很抱歉,如果这一切看起来势不可挡,但很多人都有这个错误。只是google它,找到解决方案:)。