UTF-8でエンコードされたコンテンツを含むファイルを作成しました(PHP fputcsvを使用)。
このファイルをNotepad++で開くと、文字が間違っています(Notepad ++はANSIエンコーディングで始まります)。
メニューから[フォーマット]->[UTF-8でエンコード]を設定すると、すべて問題ありません。
心配ですが、Notepad ++はエンコードを何らかの形で認識できますが、fputcsv
?で作成したファイルに問題がある可能性があります。最初のバイトか何か?
UTF-8でエンコードされたコンテンツを含むファイルを作成しました(PHP fputcsvを使用)。
このファイルをNotepad++で開くと、文字が間違っています(Notepad ++はANSIエンコーディングで始まります)。
メニューから[フォーマット]->[UTF-8でエンコード]を設定すると、すべて問題ありません。
心配ですが、Notepad ++はエンコードを何らかの形で認識できますが、fputcsv
?で作成したファイルに問題がある可能性があります。最初のバイトか何か?
エンコーディングを自動的に検出することは、正確に実行できるものではありません。エンコーディングを明示的に指定することは非常に重要です。推測できる場合もありますが、それでも100%確実ではありません。
このドキュメント(エンコーディング)では、Notepad++に関連する状況について説明しています。また、特にファイルがバイト順マーク(BOM)で保存されていない場合に問題が発生することも指摘しています。
エンコードを手動で設定するとファイルが正しく表示されることを考えると、ファイルの生成と保存の方法に問題はないと思います。確認できるのは、BOMが保存されているかどうかだけです。これにより、Notepad++がエンコードを自動的に検出できる可能性が高くなります。
Unicode Standardドキュメントによると、Notepad ++などの編集者がエンコーディングをより正確に識別するのに役立つ場合がありますが、BOMは推奨されないことに注意してください。
使用されている実際のエンコードを確認するには、Notepad++GUIの右下隅を確認する必要があります。問題は、Notepad ++に固有のものではありません。正しいエンコーディングを推測することは、実際の解決策がなければ大きな問題であるため、それぞれの場合に最も適切なエンコーディングをユーザーに決定させる方がよいでしょう。
テキストファイルのエンコーディングをJavaプログラムに反映させたい場合は、エンコーディングと文字セットの2つの要素を考慮する必要があります。テキストファイルを開くと、[エンコード]メニューの下にエンコードが表示されます。さらに、文字セットメニューポイントを確認します。「東ヨーロッパ」の下に「ISO8859-2」があり、中央ヨーロッパの下に「Windows-1250」があります。次の表を参照すると、Javaプログラムで対応するエンコーディングを設定できます 。https : //docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.htmlたとえば、CenntralEuropeanの場合文字セット「Windows-1250」の表は、Javaエンコーディング「Cp1250」を示しています。エンコーディングを設定すると、プログラム内の文字が正しく表示されます。