文字列のエンコードとデコードで文字化けの問題を解決
「UnicodeEncodeError: 'ascii' コーデックは位置 0-1 の文字をエンコードできません: ordinal not in range(128)」というエラーが報告されるのはなぜですか?この記事ではこの問題について検討します。
Python の文字列の内部表現は Unicode エンコードであるため、エンコード変換を行う場合は、通常、中間エンコードとして Unicode を使用する必要があります。つまり、最初に他のエンコードの文字列を Unicode にデコードしてから、Unicode からエンコードする必要があります。 . ) を別のエンコーディングに変換します。
decode の機能は、str1.decode('gb2312') など、他のエンコードされた文字列を Unicode エンコードに変換することです。これは、gb2312 でエンコードされた文字列 str1 を Unicode エンコードに変換することを意味します。
encode の機能は、Unicode エンコードを他のエンコードされた文字列 (str2.encode('gb2312') など) に変換することです。これは、Unicode エンコードされた文字列 str2 を gb2312 エンコードに変換することを意味します。
したがって、トランスコードするときは、まず文字列 str がどのようなエンコードであるかを理解してから、それを Unicode にデコードし、次に他のエンコードにエンコードする必要があります
コード内の文字列のデフォルトのエンコードは、コードのエンコードと一致しています。ファイル自体。
例: s='中国語'
utf8 ファイルにある場合、文字列は utf8 でエンコードされます。gb2312 ファイルにある場合、そのエンコードは gb2312 です。この場合、エンコード変換を行うには、まず decode メソッドを使用して Unicode エンコードに変換し、次に encode メソッドを使用して他のエンコードに変換する必要があります。通常、特定のエンコード方法が指定されていない場合は、システムのデフォルトのエンコードを使用して作成されたコード ファイルが使用されます。
文字列が次のように定義されている場合: s=u' Chinese'
文字列のエンコーディングは、コードファイル自体のエンコーディングに関係なく、Python の内部エンコーディングである Unicode として指定されます。したがって、この場合のエンコード変換は、encodeメソッドを直接使用して、指定したエンコードに変換するだけで済みます。
文字列がすでに Unicode である場合、デコード時にエラーが発生するため、通常はエンコード方式が Unicode であるかどうかを判断する必要があります:
isinstance(s, unicode) #用来判断是否为unicode
Unicode 以外のエンコード形式で str を使用してエンコードするとエラーになります
システムのデフォルトのエンコーディングを取得するにはどうすればよいですか?
#!/usr/bin/env python #coding=utf-8 import sys print sys.getdefaultencoding()
プログラム自体の問題ではなく、英語版 Windows でのこのプログラムの出力です。
UliPad で次のコードを実行すると:
s=u"中文" print s
次のプロンプトが表示されます: UnicodeEncodeError: 'ascii' codec can't encodecharacters in Position 0-1: ordinal not in range(128).これは、英語版 Windows 上の UliPad のコンソール情報出力ウィンドウが原因です。
最後の文を print s.encode('gb2312') に変更します
「中国語」という単語は正しく出力できます。
最後の文を print s.encode('utf8')
に変更すると、出力は xe4xb8xadxe6x96x87 になります。これは、コンソール情報出力ウィンドウが ASCII エンコードに従って utf8 でエンコードされた文字列を出力した結果です。
unicode(str,'gb2312') は str.decode('gb2312') と同じで、どちらも gb2312 でエンコードされた str を Unicode エンコードに変換します
str のエンコード形式を表示するには str.__class__ を使用します
原則について話した後長い時間がかかりましたが、ついに万能薬を考え出しましょう:)
コードは次のとおりです:
#!/usr/bin/env python #coding=utf-8 s="中文" if isinstance(s, unicode): #s=u"中文" print s.encode('gb2312') else: #s="中文" print s.decode('utf-8').encode('gb2312')

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。
