2013-01-09 77 views
9

Tôi đã tạo tệp có nội dung được mã hóa UTF-8 (sử dụng PHP fputcsv).Notepad ++ có thể nhận dạng mã hóa?

Khi tôi mở tệp này trong Notepad ++ - ký tự sai (Notepad ++ bắt đầu bằng mã hóa ANSI).

Khi tôi đặt Định dạng -> "Mã hóa bằng UTF-8" từ menu - mọi thứ đều ổn.

Đáng lo ngại, Notepad ++ có thể nhận dạng mã hóa bằng cách nào đó và có thể đã xảy ra sự cố với tệp của tôi được tạo bằng fputcsv? Byte đầu tiên hay gì đó?

Trả lời

14

Tự động phát hiện mã hóa không phải là điều có thể thực hiện chính xác. Nó là khá nhiều điều cần thiết rằng mã hóa được quy định một cách rõ ràng. Nó có thể được đoán trong một số trường hợp, nhưng thậm chí sau đó không chắc chắn 100%.

Tài liệu này (Encoding) giải thích tình huống liên quan đến Notepad ++. Họ cũng chỉ ra rằng những khó khăn phát sinh đặc biệt là nếu các tập tin đã không được lưu với một Byte Order Mark (BOM).

Do tệp của bạn hiển thị chính xác khi bạn đặt mã hóa theo cách thủ công, tôi sẽ nói không có gì sai với cách bạn tạo và lưu tệp. Điều duy nhất bạn có thể kiểm tra là liệu BOM có đang được lưu hay không, điều này có thể cải thiện cơ hội Notepad ++ có thể tự động phát hiện mã hóa.

Cần lưu ý rằng mặc dù nó có thể giúp các trình soạn thảo như Notepad ++ xác định mã hóa chính xác hơn, theo tài liệu Unicode Standard, BOM không được khuyến nghị.

+0

Có cách nào để kiểm soát Thứ tự Byte trong PHP không? – Kamil

+1

Tôi sợ tôi không phải là người PHP, nhưng tôi đã tìm thấy điều này có thể giúp: http://php.net/manual/en/function.utf8-encode.php#68211. Hãy nhớ rằng BOM là không cần thiết (và trên thực tế là không khuyến cáo trong tài liệu chuẩn Unicode) –

+0

Cảm ơn @chamila_c. Đây là tất cả những gì tôi muốn biết. – Kamil

6

Bạn phải kiểm tra góc dưới bên phải của giao diện Notepad ++ để xem việc mã hóa thực sự đang được sử dụng. Vấn đề không phải là Notepad ++ cụ thể bởi vì việc đoán mã hóa đúng là một vấn đề lớn mà không có bất kỳ giải pháp thực nào, vì vậy tốt hơn là cho phép người dùng quyết định mã hóa thích hợp nhất trong từng trường hợp là gì.

0

Khi bạn muốn phản ánh mã hóa của tệp văn bản trong chương trình Java, bạn phải xem xét hai thnigs: mã hóa và bộ ký tự. Khi bạn mở một tệp văn bản, bạn sẽ thấy mã hóa trong trình đơn "Mã hóa". Ngoài ra, hãy xem điểm trình đơn tập hợp ký tự. Trong "Đông Âu", bạn sẽ tìm thấy "ISO 8859-2" và dưới Trung Âu "Windows-1250". Bạn có thể đặt mã hóa tương ứng trong chương trình Java khi bạn tra cứu trong bảng: https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html Ví dụ, đối với bộ ký tự châu Âu Cenntral "Windows-1250", bảng đề xuất mã hóa Java "Cp1250". Đặt mã hóa và bạn sẽ thấy các ký tự trong chương trình đúng cách.

+0

Bạn đang trả lời câu hỏi nào? Câu hỏi thực sự không liên quan gì đến java. – Toto

+0

Tôi trả lời câu hỏi liên quan đến ký tự mã hóa trong Notepad ++. –

Các vấn đề liên quan