web-dev-qa-db-ja.com

Notepad ++はエンコーディングを認識できますか?

UTF-8でエンコードされたコンテンツを含むファイルを作成しました(PHP fputcsvを使用)。

このファイルをNotepad ++で開くと、文字が正しくありません(Notepad ++はANSIエンコーディングで始まります)。

メニューからFormat-> "UTF-8でエンコード"を設定すると、すべて問題ありません。

Notepad ++が何らかの方法でエンコードを認識できることを心配しているのですが、fputcsvで作成したファイルに何か問題があるのではないでしょうか。最初のバイトか何か?

14
Kamil

エンコーディングの自動検出は、正確に実行できるものではありません。エンコーディングを明示的に指定することは非常に重要です。推測できる場合もありますが、100%確実であるとは限りません。

このドキュメント( エンコーディング )は、Notepad ++に関連する状況を説明しています。また、特にファイルがバイトオーダーマーク(BOM)で保存されていない場合に問題が発生することも指摘しています。

手動でエンコードを設定するとファイルが正しく表示されるので、ファイルの生成方法と保存方法には何の問題もないと思います。チェックできる唯一のことは、BOMが保存されているかどうかです。これにより、Notepad ++が自動的にエンコードを検出できる可能性が高まる可能性があります。

Notepad ++のようなエディターがエンコーディングをより正確に識別するのに役立つかもしれませんが、Unicode Standardドキュメントによると、BOMは推奨されないことに注意する価値があります。

16

Notepad ++ GUIの右下隅をチェックして、使用されている実際のエンコーディングを確認する必要があります。問題はNotepad ++固有ではありません。適切なエンコーディングを推測することは実際の解決策がないと大きな問題なので、1つのケースで最も適切なエンコーディングをユーザーに決定させる方が良いためです。

12
user1824407

Javaプログラムでテキストファイルのエンコーディングを反映する場合は、エンコーディングと文字セットの2つを検討する必要があります。テキストファイルを開くと、「エンコーディング"メニュー。さらに、文字セットメニューポイントを確認してください。" Eastern European "の下に" ISO 8859-2 "があり、中央ヨーロッパの" Windows-1250 "の下にあります。対応するエンコーディングはJavaテーブルを参照するときのプログラム: https://docs.Oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html たとえば、中央ヨーロッパ言語の文字セット「Windows-1250」の場合、表はJava encoding "Cp1250"を推奨します。エンコーディングを設定すると、プログラムで文字が正しく表示されます。