2013-01-09 8 views
9

Utworzono plik z zakodowaną treścią UTF-8 (przy użyciu PHP fputcsv).Notepad ++ potrafi rozpoznawać kodowanie?

Kiedy otwieram ten plik w Notepad ++ - znaki są nieprawidłowe (Notepad ++ zaczyna się od kodowania ANSI).

Po ustawieniu opcji Format -> "Kodowanie w UTF-8" z menu - wszystko jest w porządku.

Niepokojące, że Notepad ++ może w jakiś sposób rozpoznać kodowanie, a może coś jest nie tak z moim plikiem utworzonym za pomocą fputcsv? Pierwszy bajt czy coś takiego?

Odpowiedz

14

Automatyczne wykrywanie kodowania nie jest możliwe do wykonania dokładnie. Jest bardzo istotne, aby kodowanie było jawnie określone. W niektórych przypadkach można się domyślić, ale nawet wtedy nie z 100% pewnością. Ta instrukcja (Encoding) wyjaśnia sytuację w odniesieniu do Notepad ++. Podkreślają również, że trudność pojawia się szczególnie, jeśli plik nie został zapisany przy użyciu Bajka Order Mark (Bajt Order Mark).

Ponieważ plik zostanie wyświetlony poprawnie po ręcznym ustawieniu kodowania, powiedziałbym, że nie ma nic złego w sposobie generowania i zapisywania pliku. Jedyne, co można sprawdzić, to czy zapisywane jest BOM, co może zwiększyć szanse, że Notepad ++ będzie w stanie automatycznie wykryć kodowanie.

Warto zauważyć, że chociaż może to pomóc edytorom takim jak Notepad ++, dokładniej zidentyfikować kodowanie, zgodnie z dokumentem standardowym Unicode, zestawienie komponentów nie jest zalecane.

+0

Czy istnieje sposób kontrolowania oznaczenia kolejności bajtów w PHP? – Kamil

+1

Obawiam się, że nie jestem PHP, ale znalazłem to, co może pomóc: http://php.net/manual/en/function.utf8-encode.php#68211. Należy pamiętać, że zestawienie komponentów nie jest konieczne (a w rzeczywistości nie jest zalecane w dokumencie standardowym Unicode). –

+0

Dzięki @ chamila_c. To wszystko, co chciałem wiedzieć. – Kamil

6

Musisz sprawdzić prawy dolny róg GUI Notepad ++, aby zobaczyć faktyczne miejsce, które jest używane. Problem nie polega na tym, że Notepad ++ jest specyficzny, ponieważ odgadnięcie właściwego kodowania jest dużym problemem bez żadnego realnego rozwiązania, dlatego lepiej pozwolić użytkownikowi zdecydować, jakie jest najlepsze kodowanie w każdym pojedynczym przypadku.

0

Jeśli chcesz odzwierciedlić kodowanie pliku tekstowego w programie Java, musisz wziąć pod uwagę dwa thnigs: kodowanie i zestaw znaków. Po otwarciu pliku tekstowego widać kodowanie w menu "Kodowanie". Dodatkowo spójrz na punkt menu zestawu znaków. W części "Europa Wschodnia" znajdziesz "ISO 8859-2", a pod Central European "Windows-1250". Możesz ustawić odpowiednie kodowanie w programie Java , gdy spojrzysz w górę na tabelę: https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html Na przykład dla cenntralnego europejskiego zestawu znaków "Windows-1250" tabela sugeruje kodowanie Java "Cp1250". Ustaw kodowanie i zobaczysz poprawnie znaki w programie.

+0

Na jakie pytanie odpowiadasz? Rzeczywiste pytanie nie ma nic wspólnego z Javą. – Toto

+0

Odpowiadam na pytanie związane z kodowaniem znaków w Notepad ++. –