Câu trả lời:
Mã hóa ANSI là một thuật ngữ hơi chung chung được sử dụng để chỉ trang mã tiêu chuẩn trên hệ thống, thường là Windows. Nó được gọi đúng hơn là Windows-1252 trên các hệ thống phương Tây / Hoa Kỳ. (Nó có thể đại diện cho một số trang mã Windows khác trên các hệ thống khác.) Đây thực chất là một phần mở rộng của bộ ký tự ASCII trong đó bao gồm tất cả các ký tự ASCII có thêm 128 ký tự. Sự khác biệt này là do thực tế là mã hóa "ANSI" là 8 bit chứ không phải 7 bit như ASCII (ASCII hầu như luôn được mã hóa hiện nay dưới dạng byte 8 bit với MSB được đặt thành 0). Xem bài viết để được giải thích tại sao mã hóa này thường được gọi là ANSI.
Tên "ANSI" là một cách gọi sai, vì nó không tương ứng với bất kỳ tiêu chuẩn ANSI thực tế nào, nhưng tên đã bị kẹt. ANSI không giống như UTF-8.
windows-1254
.
Về mặt kỹ thuật, ANSI phải giống như US-ASCII. Nó đề cập đến tiêu chuẩn ANSI X3.4, đơn giản là phiên bản được phê chuẩn của tổ chức ANSI của ASCII. Việc sử dụng các ký tự tập bit trên cùng không được xác định trong ASCII / ANSI vì đây là bộ ký tự 7 bit.
Tuy nhiên, nhiều năm sử dụng sai thuật ngữ của DOS và sau đó, cộng đồng Windows đã để lại ý nghĩa thực tế của nó như là mã hóa hệ thống của bất cứ máy nào đang được sử dụng. Bảng mã hệ thống đôi khi còn được gọi là 'mbcs', vì trên các hệ thống Đông Á có thể là mã hóa nhiều byte cho mỗi ký tự. Một số trang mã thậm chí có thể sử dụng các byte rõ ràng hàng đầu như các byte theo dõi trong một chuỗi đa bào, do đó, nó thậm chí không tương thích chặt chẽ với ASCII đơn giản ... nhưng ngay cả khi đó, nó vẫn được gọi là BẠC ANSI.
Trên cài đặt mặc định của Hoa Kỳ và Tây Âu, Bản đồ ANSI Cảnh đến mã trang Windows 1252. Điều này không giống với ISO-8859-1 (mặc dù nó khá giống nhau). Trên các máy khác, nó có thể là bất cứ thứ gì khác. Điều này làm cho AN AN nghiêm trọng hoàn toàn vô dụng như một định danh mã hóa bên ngoài.
Nói đúng ra, không có thứ gọi là mã hóa ANSI. Thông thường, thuật ngữ ANSI được sử dụng cho một số bảng mã khác nhau:
Ngày xưa, Microsoft, giống như mọi người khác, đã sử dụng các bộ ký tự 7 bit và họ đã phát minh ra chính họ khi nó phù hợp với họ, mặc dù họ giữ ASCII như một tập hợp con cốt lõi. Sau đó, họ nhận ra thế giới đã chuyển sang mã hóa 8 bit và có các tiêu chuẩn quốc tế xung quanh, chẳng hạn như gia đình ISO-8859. Vào thời đó, nếu bạn muốn đạt được một tiêu chuẩn quốc tế và bạn sống ở Mỹ, bạn đã mua nó từ Viện Tiêu chuẩn Quốc gia Hoa Kỳ, ANSI, người đã công bố các tiêu chuẩn quốc tế với nhãn hiệu và số riêng của họ (đó là vì chính phủ Hoa Kỳ muốn phù hợp với tiêu chuẩn Mỹ, không phải tiêu chuẩn quốc tế). Vì vậy, bản sao ISO-8859 của Microsoft đã ghi "ANSI" trên trang bìa. Và bởi vì Microsoft không quen với các tiêu chuẩn trong những ngày đó, nên họ đã không ' t nhận ra rằng ANSI cũng đã công bố rất nhiều tiêu chuẩn khác. Vì vậy, họ đã đề cập đến các tiêu chuẩn trong gia đình ISO-8859 (và các biến thể mà họ đã phát minh ra, vì họ không thực sự hiểu các tiêu chuẩn trong những ngày đó) bằng tên trên trang bìa, "ANSI", và nó đã tìm thấy Microsoft tài liệu người dùng và do đó vào cộng đồng người dùng. Đó là khoảng 30 năm trước, nhưng đôi khi bạn vẫn nghe thấy tên ngày hôm nay.
ASCII chỉ định nghĩa một trang mã 7 bit với 128 ký hiệu. ANSI mở rộng điều này lên 8 bit và có một số trang mã khác nhau cho các ký hiệu 128 đến 255.
Việc đặt tên ANSI là không chính xác vì thực tế đây là tiêu chuẩn ISO / IEC 8859 xác định các trang mã này. Xem ISO / IEC 8859 để tham khảo. Có 16 trang mã ISO / IEC 8859-1 đến ISO / IEC 8859-16.
Windows-1252 một lần nữa dựa trên ISO / IEC 8859-1 với một số sửa đổi chủ yếu trong phạm vi của bộ điều khiển C1 trong phạm vi 128 đến 159. Wikipedia nói rằng Windows-1252 cũng được gọi là ISO-8859-1 trong một giây gạch nối giữa ISO và 8859. (Không thể tin được! Ai làm điều gì đó như vậy?!?)
Về cơ bản "ANSI" đề cập đến bản mã kế thừa trên Windows. Xem thêm một bài viết của Raymond Chen về chủ đề này:
Nguồn gốc của điều này xuất phát từ thực tế là trang mã Windows 1252 ban đầu được dựa trên một bản nháp ANSI, đã trở thành Tiêu chuẩn ISO 8859-1.
Tuy nhiên, 127 ký tự đầu tiên giống hệt với ASCII trong hầu hết các trang mã, các ký tự phía trên khác nhau.
Tuy nhiên, ANSI không tự động có nghĩa là CP1252 hoặc Latin 1.
Tất cả sự nhầm lẫn mặc dù bạn chỉ cần tránh những vấn đề như vậy hiện nay và sử dụng Unicode.
Chỉ trong trường hợp PC của bạn không phải là PC "phương Tây" và bạn không biết trang mã nào được sử dụng, bạn có thể xem trang này: Tham khảo API hỗ trợ ngôn ngữ quốc gia (NLS)
[Microsoft đã xóa tham chiếu này, lấy mẫu tham khảo API hỗ trợ ngôn ngữ quốc gia (NLS) lưu trữ web
Hoặc bạn có thể truy vấn sổ đăng ký của mình:
C:\>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /f ACP
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
ACP REG_SZ 1252
End of search: 1 match(es) found.
C:\>
Khi sử dụng các ký tự byte đơn, định dạng ASCII xác định 127 ký tự đầu tiên. Các ký tự mở rộng từ 128-255 được xác định bởi các trang mã ANSI khác nhau để cho phép hỗ trợ hạn chế cho các ngôn ngữ khác. Để hiểu được chuỗi mã hóa ANSI, bạn cần biết nó sử dụng trang mã nào.
Tôi nhớ khi văn bản "ANSI" đề cập đến mã thoát VT-100 giả có thể sử dụng trong DOS thông qua trình điều khiển ANSI.SYS để thay đổi luồng văn bản phát trực tuyến .... Có thể không phải là những gì bạn đang đề cập nhưng nếu nó được xem http: //en.wikipedia.org/wiki/ANSI_escape_code
ANSI (còn gọi là Windows-1252 / WinLatin1) là mã hóa ký tự của bảng chữ cái Latinh, khá giống với ISO-8859-1 . Bạn có thể muốn xem nó tại Wikipedia .