Pythonの文字コードについて UnicodeDecodeError
現在、以下の環境にてpythonを使用しています。
- Ubuntu18.04
- python 3.6.9
- nvidia docker
- cuda:10.1-cudnn7-devel-ubuntu18.04
- jupyter notebook
そこで、jsonファイルをロードしようとしたところ、以下のようなエラーが出力されました。
UnicodeDecodeError Traceback (most recent call last) <ipython-input-6-9b06f010e639> in <module> 4 for train_annotations_file in train_annotations_files: 5 with open(os.path.join(_train_annotations_path, train_annotations_file)) as f: ----> 6 annotation = json.load(f) 7 labels = annotation["labels"] 8 per_image.append(len(labels)) /usr/lib/python3.6/json/__init__.py in load(fp, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw) 294 295 """ --> 296 return loads(fp.read(), 297 cls=cls, object_hook=object_hook, 298 parse_float=parse_float, parse_int=parse_int, /usr/lib/python3.6/encodings/ascii.py in decode(self, input, final) 24 class IncrementalDecoder(codecs.IncrementalDecoder): 25 def decode(self, input, final=False): ---> 26 return codecs.ascii_decode(input, self.errors)[0] 27 28 class StreamWriter(Codec,codecs.StreamWriter): UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 17: ordinal not in range(128)
様々なサイトを参考にして、デフォルトの文字コードをutf-8
にしたのですが、エラーが治りません。
しかし、sys.getdefaultencoding()
と入力すると'utf-8'
というふうに出力されます。
どなたかご教授頂けませんか。
*追記
シェルでlocale
コマンドを実行した結果
LANG= LANGUAGE= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL=
*解決先
localeコマンドの出力のLANGUAGEが空になっているので言語設定をするために以下のコマンドを入力した
apt install language-pack-ja-base language-pack-ja ibus-mozc echo 'export LANG=ja_JP.UTF-8' >> ~/.bashrc echo 'export LANGUAGE="ja_JP:ja"' >> ~/.bashrc
回答1件
あなたの回答
tips
プレビュー