0

サーバーの応答を受け取りました。バイト:

\xd0\xa0\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8 \xd0\xa0\xd0\xa4 \xd0\x9a\xd0\xa6\xd0\x91

これは確かにキリル文字ですが、どのエンコーディングかはわかりません。Python でデコードしようとするたびに失敗します。

b = b'\xd0\xa0\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8 \xd0\xa0\xd0\xa4 \xd0\x9a\xd0\xa6\xd0\x91'
>>> b.decode('utf-8')
'\u0420\u0443\u0431\u043b\u0438 \u0420\u0424 \u041a\u0426\u0411'
>>> print(b.decode('utf-8'))
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-4:
character maps to <undefined>

>>> b.decode('cp1251')
'\u0420\xa0\u0421\u0453\u0420±\u0420»\u0420\u0451 \u0420\xa0\u0420¤
\u0420\u0459\u0420¦\u0420\u2018'
>>> print(b.decode('cp1251'))
UnicodeEncodeError: 'charmap' codec can't encode character '\u0420' in
position 0: character maps to <undefined>

どちらの結果も Unicode エスケープに多少似ていますが、これも機能しません。

>>> codecs.decode('\u0420\u0443\u0431\u043b\u0438 \u0420\u0424 \u041a\u0426\u0411',
'unicode-escape')
'Ð\xa0Ñ\x83бли Ð\xa0Ф Ð\x9aЦÐ\x91'

キリル文字を復元するためのWeb サービスがあり、Windows-1251 を使用してバイトをデコードできます。

出力 (ソース エンコーディング: WINDOWS-1251)

Рубли РФ КЦБ

しかし、それにアプローチする方法については、これ以上のアイデアはありません。

エンコーディングの仕組みについて何かが欠けていると思うので、問題が些細なことだと思われる場合は、少しの説明/チュートリアルへのリンク/さらにグーグルで検索するためのいくつかのキーワードをいただければ幸いです。

解決:

Windows PowerShell は既定で Windows-850 コードページを使用しますが、これは一部のキリル文字を処理できません。解決方法の 1 つは、シェルを起動するたびにコードページを Unicode に変更することです。

chcp 65001

これを新しいデフォルトにする方法を説明します

4

2 に答える 2