[解決済み】PythonでUTF-8ファイルに書き込む
2022-04-07 22:13:08
質問
について、とても混乱しています。
codecs.open function
. そうすると
file = codecs.open("temp", "w", "utf-8")
file.write(codecs.BOM_UTF8)
file.close()
というエラーが表示されます。
UnicodeDecodeError: 'ascii' コーデックは、バイト 0xef in position をデコードできません。 0: 序数が範囲(128)内ではない
そうすると
file = open("temp", "w")
file.write(codecs.BOM_UTF8)
file.close()
正常に動作しています。
質問 は、なぜ最初のメソッドが失敗するのでしょうか?また、Bomを挿入するにはどうすればいいのでしょうか?
もし、2番目の方法が正しい方法であるなら、何のために
codecs.open(filename, "w", "utf-8")
?
解決方法は?
私は、この問題は
codecs.BOM_UTF8
はバイト文字列であり、ユニコード文字列ではありません。ファイルハンドラは、quot;私はUTF-8エンコードされたテキストとしてUnicodeを書くことを意味しているのに、あなたは私にバイト文字列を与えました!"に基づいて、あなたが本当に言いたいことを推測しようとしているのだと思います。
バイトオーダーマークのユニコード文字列(つまりユニコードU+FEFF)を直接書いてみて、ファイルがそれをUTF-8としてエンコードするだけにします。
import codecs
file = codecs.open("lol", "w", "utf-8")
file.write(u'\ufeff')
file.close()
(これで正解のようです。バイト数EF BB BFのファイルです。)
EDIT: S. Lottの 提案 エンコーディングに "utf-8-sig" を使用することは、自分で明示的に BOM を書くよりも良い方法ですが、以前何が間違っていたかを説明してくれているので、この回答をここに残しておきます。
関連
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み] UnicodeDecodeError: 'ascii' コーデックはポジション 1 のバイト 0xef をデコードできません。
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] UTF-8とBOMなしUTF-8の違いは何ですか?
-
[解決済み] Pythonでstdoutをパイピングするときに正しいエンコードを設定する
-
[解決済み】"for line in... "でUnicodeDecodeErrorが発生:'utf-8'コーデックはバイトをデコードできない。
-
[解決済み】Unicodeテキストをテキストファイルに書き込む?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python call matlab メソッドの詳細
-
Pythonの@decoratorsについてまとめてみました。
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み] UTF-8とBOMなしUTF-8の違いは何ですか?