文字化けした問題のいくつかの解決策

過去数日間で、システムトランスコーディングについてさらに学びました。もう少し書きます。

PYTHONでは、画面上のすべてのテキストはUNICODEテキストであり、システムはUNICODEテキストのみを認識します。ファイルを読み取るためのPythonのデフォルトのエンコーディングはUTF-8です。
OfficeファミリバケットのデフォルトのエンコーディングはGBKです。(中国)
WindowsデフォルトのエンコーディングはGBKです。

最小のコードはGB2312、次にGBKで、最大のコードはBIG-5です。

システムが他のコードレートでテキストを読み取る場合、100%中国語でエラーが報告され、一部の英語コードは間違っていません。


画面上のテキストを他のコードレートのファイルに保存するには、エンコードする必要があります。ファイルから他のコードレートの内容を読み取る場合は、それをデコードする必要があります。

言い換えると、エンコードは圧縮であり、デコードは解凍です。

一般的なエンコーディングには、画面表示用のUNICODE、UTF-8、中国語のGB2312、中国語の拡張機能GBKおよびBIG5が含まれます。
UTF-8は、中国語と絵文字(笑顔など)をサポートしています。

UTF-8がGBK形式に変換されると、絵文字はエラーを報告します。

mysqlデータベースのUTF8は通常のUTF-8ではなく、UTF8は3バイト、UTF-8は4バイトです。mysqlはUTF8mb4に対応します。

PYTHONが認識されないビットレートに遭遇すると、エラーを報告します。

UnicodeDecodeError: 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence

すべてをデコードできない場合は、エラーが報告されます。複数の文字列をデコードできません。バイトをデコードできません。
この種のエラーはプログラム本体から直接飛び出します。警告ではなくエラーです。

エラーの数が少ない場合は、次のように記述できます。

 file=open(root_log,'w',encoding='gb2312'errors='replace')

そのような文字化けしたコンテンツは表示されますか?

これは、UTF-8からGBK形式に置き換えて変換したテキストです。

你好:? ? ? ? 姓名:赵林 ? ? ? ?emos账号:zhaolin? ? ? ? 青岛市移动公司 ? ?网络部 ? ?网优中心? ? ? ? ? 登录这个系统:http://10.24.170:7090/drp/? ? ? ? 登录维修物料账套? ? ? ? 我应该是新增账户,之前没有账号。? ? ? ? 删除青岛网优中心weiyi账号。[email protected]?使用O
ヒント:明らかに、UTF-8エンコーディングはGBKエンコーディングの文字セットよりも大きいです...

IGNOREを使用すると、さまざまな文字化けした文字が表示されます。梅の花の星など。

異なるビットレートのテキストを認識したい場合、私は通常tryを使用します……例外……

try:
    f=open('XXXXX','r',encoding='utf-8')
except:
    f=open('XXXXX','r',encoding='GBk',errors='replace')

それが機能しない場合は、さらにいくつかの判断を書いてください...通常、GBKとUTF-8はもっとあります。

PYTHON環境のデフォルトのデコードはUTF-8であり、中国のWINDOWSのデフォルトの環境はGBK(またはGB2312)です。したがって、手書き環境ではデフォルトのデコードが必要です。

言い換えると、f = open(XXXX)でPYTHONプログラムを作成すると、デフォルトでencoding = "UTF-8"が作成されます。
ファイルの前にデフォルトのコメント行を書くことができます:

- -モード:パイソン。コーディング:UTF-8 - -

デフォルトでは、Pythonのstr文字列はUNICODEデコードであり、タイプはTYPESデコードです。

メールのデコードには、デフォルトでUTF-8とGB2312の2種類があります。これはメールボックスの雰囲気に依存します...
ここに画像の説明を挿入
メールボックスはデコードされるファイルのフォーマットを指定します。

データベースにデータをインポートするときは、インポートする前にまずコードを特定する必要があります。そうしないと、エラーが報告されます。
Navicatにはファイルエンコーディングを自動的に認識する機能があり、UESにもそれがあります。インストールしたくない場合は、システムのデフォルトのTXTリーダー(以下のもの)で問題ありません。

ここに画像の説明を挿入

dbeaverには自動的にデコードする機能がないため、手動でエンコードする必要があります。
もちろん、dbeaverは使いやすいと思います...

PYTHONにはコードを認識するソフトウェアシャルデットがありますが、文句を言うのは少し遅いです...
それからtext / htmlを認識するときに文字化けします(異なるコードレートだと思います)、私はそれを解決するためのコードをオンラインで見つけました(試していません)

import re
from html import unescape
 
def html_to_plain_text(html):
    text = re.sub('<head.*?>.*?</head>', '', html, flags=re.M | re.S | re.I)
    text = re.sub('<a\s.*?>', ' HYPERLINK ', text, flags=re.M | re.S | re.I)
    text = re.sub('<.*?>', '', text, flags=re.M | re.S)
    text = re.sub(r'(\s*\n)+', '\n', text, flags=re.M | re.S)
    return unescape(text)

効果はかなり良いですが、わかりません...

おそらく内容は上記の通りです。

おすすめ

転載: blog.csdn.net/weixin_45642669/article/details/112916263