Python処理JSON時の値エラーと符号化エラーの2つの解決実録

1375 ワード

1、ValueError:Invalid control character at:line 1 column 8363(char 8362)jsonを使用する.loads(json_data)の場合、次のように表示されます.

ValueError: Invalid control character at: line 1 column 8363 (char 8362)

エラーの原因は、文字列に戻り文字(r)または改行文字()が含まれているためです.(1)これらの文字をエスケープするには、次のようにします.

json_data = json_data.replace('\r', '\\r').replace('
', '\
')

(2)キーワードstrictの使用:

json.loads(json_data, strict=False)

strictのデフォルトはTrueで、内部文字列を厳格に制御し、Falseに設定すると、rを許可します.
2、UnicodeEncodeError:ascii codec can't encodeエラーwindowsで書いたpythonスクリプトをlinuxで実行し、直接報告する:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)
エラーの原因はPython 2です.7インストール時、デフォルトの符号化はasciiであり、プログラム中に非ascii符号化が発生した場合、Pythonの処理はしばしばこのようなエラーを報告するが、Python 3ではこのような問題はない.
解決方法:
(1)一時的解決方法:コードの前に加入する:

import sys 
reload(sys) 
sys.setdefaultencoding('utf8')

(2)一労永逸:Pythonのlibsite-packagesフォルダの下にsitecustomize.pyを新規作成します.内容は以下の通りです.

# encoding=utf8 
import sys 

reload(sys) 
sys.setdefaultencoding('utf8')


そうすると、システムはPythonが起動したときに、自分でファイルを呼び出し、システムのデフォルトコードを設定します.