ANSI đến UTF-8 trong Notepad ++


25

Tôi có một văn bản được mã hóa trong ANSI:

Tệp văn bản ANSI

Khi tôi cố gắng chuyển đổi nó thành UTF-8 (sử dụng menu Notepad ++ Mã hóa> UTF-8), tôi nhận được một số ký tự lạ:

Tệp văn bản UTF-8

Tôi đã nghĩ rằng UTF-8 là một siêu sao của ANSI và sau đó tôi sẽ không gặp phải vấn đề như vậy. Có cách nào tôi có thể tránh sự xuất hiện của những nhân vật kỳ lạ đó không?


Tôi không thấy điều gì kỳ lạ ở hình ảnh sau
phuclv

Tôi có nghĩa là các nhân vật không hiển thị. Có cách nào để tránh điều này?
dùng3658425

Bạn đã chỉnh sửa câu hỏi? Tôi nghĩ rằng tôi thấy các hình ảnh đảo ngược
phuclv

1
Vâng xin lỗi tôi đã đẩy bản chỉnh sửa cuối cùng của mình ngay sau khi ai đó thêm hình ảnh, bằng cách xóa phần bổ sung: nếu bạn có thể thêm chúng trở lại thì thật tuyệt!
user3658425

4
Tất cả những gì tôi đã học về chủ đề này, tôi học được từ của Joel " Các nhà phát triển phần mềm Absolute tối thiểu Mỗi Tuyệt đối, tích cực Phải Biết Về Unicode và tự Sets (Không Lý Do!) "
Uwe Keim

Câu trả lời:


38

UTF-8 không phải là bộ ký tự, chỉ là mã hóa cho Unicode. 128 ký tự đầu tiên giống như ASCII nhưng khác nhau ở 128 byte cao. Một byte với tập bit cao (hoặc> = 0x80) là một ký tự mở rộng trong ASCII trong khi ở UTF-8, nó chỉ ra byte bắt đầu của chuỗi nhiều byte. Đó là trường hợp 0x93 hoặc 0x94 ở trên. Tuy nhiên, tôi không thấy bất cứ điều gì lạ trong tập tin. Đó là những trích dẫn hoặc trích dẫn thông minh với các hình thức khác nhau để mở và đóng dấu ngoặc kép, mà bạn thường thấy khi sử dụng trình soạn thảo văn bản phong phú như MS Word

Chỉnh sửa

Câu hỏi đã được chỉnh sửa. Tôi nghĩ đó là vì bạn đã chọn sai công cụ. Các encodemục menu là để thay đổi mã hóa nếu bạn hiển thị sai ký tự. Nó chỉ xử lý chuỗi byte tương tự được đọc từ đĩa như một mã hóa khác. Vì ASCII và UTF-8 khác nhau, bạn sẽ có chuỗi byte UTF-8 không đúng và xem kết quả ở trên. Bạn cần chọn convert to UTF-8nó để thay đổi toàn bộ byte đầu vào

mã hóa notepad

Bạn cũng đã nhầm lẫn ANSI và ASCII. ANSI thường đề cập đến Windows-1252, là một bộ ký tự được sử dụng trong tiếng Anh Windows và một số ngôn ngữ Tây Âu. Đây là siêu bộ của ISO 8859-1, mặc dù ISO 8859-1 cũng có thể được gọi là ANSI. ISO 8859-1 cũng là 256 điểm mã đầu tiên của Unicode, do đó, nó là một tập hợp con của Unicode, nhưng nó không tương thích với mã hóa UTF-8. ASCII là một bộ ký tự 7 bit và là một tập hợp con của ANSI được mã hóa bởi 8 bit, nhưng đôi khi nó cũng được gọi là ANSI, mặc dù không chính xác lắm

https://en.wikipedia.org/wiki/ANSI_character_set

Nói chung, mối quan hệ giữa các bộ ký tự như sau

ASCII < ISO 8859-1 < Windows-1252
        ^
        Unicode

Cảm ơn, xin lỗi vì làm hỏng bảng mã với mã hóa. Có cách nào để tránh việc có những ký tự không hiển thị đó và có một số trích dẫn hiển thị thay thế không?
dùng3658425

@ user3658425 vui lòng xem bản chỉnh sửa của tôi
phuclv

1
Tôi cũng đã chỉnh sửa thông tin ANSI / ASCII ở trên
phuclv

3
Lưu ý rằng, nói chung, "UTF-8 không có Dấu thứ tự Byte" là những gì bạn muốn. Như một số người khác đã nói trong quá khứ, "UTF-8 là mã hóa chuỗi hữu ích duy nhất ."
Đạp xe

4
@WillihamTotland utf8everywhere.org
phuclv
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.