2013-01-09 7 views
9

(PHP fputcsvを使用して)UTF-8でエンコードされたコンテンツを含むファイルを作成しました。Notepad ++はエンコードを認識できますか?

Notepad ++でこのファイルを開くと、文字が間違っています(Notepad ++はANSIエンコーディングで始まります)。

「フォーマット」 - >「UTF-8でエンコードする」をメニューから設定すると、すべて問題ありません。

私は心配していますが、メモ帳++は何らかの形でエンコーディングを認識でき、fputcsvで作成されたファイルで何か問題がありますか?最初のバイトか何か?

答えて

14

エンコードを自動的に検出することは、正確に行うことができません。エンコーディングを明示的に指定することはかなり大変重要です。場合によっては推測することができますが、それでも100%確実ではありません。

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

手動でエンコードを手動で設定すると、ファイルが正しく表示されるため、ファイルの生成方法と保存方法に問題はありません。あなたが確認できる唯一のことは、BOMが保存されているかどうかであり、Notepad ++が自動的にエンコーディングを検出できる可能性が高くなる可能性があります。

Unicode標準ドキュメントによれば、Notepad ++のようなエディタがエンコードをより正確に識別するのに役立つかもしれませんが、BOMは推奨されません。

+0

PHPでByte Order Markを制御する方法はありますか? – Kamil

+1

私はPHPの人ではないのではないかと心配していますが、これは役立つかもしれません。http://php.net/manual/en/function.utf8-encode.php#68211 BOMは必要ではないことを覚えておいてください(そして実際にはUnicode標準文書では推奨されていません) –

+0

ありがとう@chamila_c。これは私が知りたかったものです。 – Kamil

6

Notepad ++ GUIの右下隅をチェックして、実際に使用されているエンコンディングを確認する必要があります。正しいエンコーディングを推測することは実際のソリューションがないと大きな問題になるので、Notepad ++固有の問題ではないので、ユーザーがそれぞれのケースで最も適切なエンコーディングを決定できるようにする方がよいでしょう。

0

テキストファイルのエンコーディングをJavaプログラムに反映させるには、エンコーディングと文字セットの2つを考慮する必要があります。テキストファイルを開くと、 "エンコーディング"メニューのエンコーディングが表示されます。さらに、文字セットのメニューポイントを確認します。 "東ヨーロッパ"の下には "ISO 8859-2"、中央ヨーロッパの "Windows-1250"があります。 https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html たとえば、Cenntralヨーロッパ文字セット「Windows-1250」の場合、表はJavaエンコーディング「Cp1250」を示唆しています。エンコーディングを設定すると、プログラム内の文字が正しく表示されます。

+0

あなたは何の質問に答えていますか?実際の質問はjavaとは関係ありません。 – Toto

+0

私はメモ帳++で文字エンコーディングに関連する質問に答える。 –

関連する問題