2009-03-31 43 views

Trả lời

180

Thuật ngữ ANSI là một thuật ngữ chung chung được dùng để chỉ trang mã chuẩn trên hệ thống, thường là Windows. Nó được gọi chính xác hơn là Windows-1252 trên phương Tây/Hoa Kỳ. hệ thống. (Nó có thể đại diện cho một số khác Windows code pages trên các hệ thống khác.) Về bản chất, đây là một extension of the ASCII character set ở chỗ nó bao gồm tất cả các ký tự ASCII có thêm 128 ký tự mã. Sự khác biệt này là do thực tế rằng mã hóa "ANSI" là 8-bit thay vì 7-bit như ASCII (ASCII gần như luôn được mã hóa ngày nay là byte 8 bit với MSB được đặt thành 0). Xem bài viết giải thích tại sao mã hóa này thường được gọi là ANSI.

Tên "ANSI" là từ 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.

+27

ANSI không chỉ là một từ sai "nhẹ", nó là một tên hoàn toàn sai. Tên này ngụ ý rõ ràng rằng bất cứ điều gì nó đề cập đến là một tiêu chuẩn ANSI, mà nó không phải là; đó là một vấn đề đen trắng. Với điều đó đã nói, nó được sử dụng rộng rãi đến mức chúng ta bị mắc kẹt với nó. –

+0

Tôi biết ANSI là Mã số 437, không phải Mã Windows 1252. Quay lại khi ANSI gọi đồ họa được tạo cho các hệ thống bảng thông báo, tôi có thể đảm bảo khá nhiều trường hợp đó. – lordscarlet

+0

@lordscarlet: ANSI đã không chuẩn hóa chúng, nhưng Windows-1252 là gần nhất bạn nhận được (ít nhất là trên Windows), như là một superset của nó. Xem http://en.wikipedia.org/wiki/ANSI_codepage#ANSI để tham khảo. – Noldorin

-3

ANSI (còn gọi là Windows-1252/WinLatin1) là mã hóa ký tự của bảng chữ cái Latinh, tương tự như ISO-8859-1. Bạn có thể muốn xem it at Wikipedia.

+5

Nó không phải CP1252 cho tất cả mọi người; điều đó phụ thuộc rất nhiều vào khu vực. – Joey

1

Khi sử dụng ký tự một byte, đị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ợ giới hạn cho các ngôn ngữ khác. Để hiểu được một chuỗi được mã hóa ANSI, bạn cần phải biết trang mã nào được sử dụng.

10

ASCII chỉ xác định trang mã 7 bit với 128 ký hiệu. ANSI mở rộng này đến 8 bit và có một số trang mã khác nhau cho các ký hiệu 128 đến 255.

ANSI đặt tên không đúng bởi vì 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 tiêu chuẩn ISO/IEC 8859-1 với một số thay đổi chủ yếu trong phạm vi của C1 control set trong khoảng 128 đến 159. Wikipedia khẳng định rằng Windows-1252 cũng đều được quy như ISO-8859-1 với một giây dấu gạch nối giữa ISO và 8859. (Không thể tin được! Ai làm như vậy?!?)

20

Nói đúng, không có mã nào như mã hóa ANSI. Thuật ngữ ANSI được sử dụng để mã hóa khác nhau:

  1. ISO 8859-1
  2. của Windows CP1252
  3. hệ thống hiện tại mã hóa trên máy tính Windows (trong thuật ngữ Win32 API).
+0

1. là sai, 2 là chính xác trên một "máy tính phương Tây" chỉ, 3 là chính xác –

+5

@ WernfriedDomscheit Tất cả ba là không chính xác. ANSI không chuẩn hóa bất kỳ mã hóa nào. Nhưng cả ba mã hóa này thỉnh thoảng được gọi là ANSI. Các tiêu chuẩn –

2

Về cơ bản "ANSI" đề cập đến bảng mã kế thừa trên Windows. Xem thêm an article by Raymond Chen về chủ đề này. 127 ký tự đầu tiên giống hệt ASCII trong hầu hết các trang mã, mặc dù các ký tự trên khác nhau.

Tuy nhiên, ANSI không không tự động có nghĩa là CP1252 hoặc Latin 1.

Tất cả nhầm lẫn dù bạn chỉ nên tránh những vấn đề như hiện nay và sử dụng Unicode.

1

Tôi nhớ khi văn bản "ANSI" được đề cập đến mã thoát giả VT-100 có thể sử dụng được trong DOS thông qua ANSI.Trình điều khiển SYS để thay đổi luồng của văn bản truyền trực tuyến .... Có lẽ không phải là những gì bạn đang đề cập đến, nhưng nếu nó đang xem http://en.wikipedia.org/wiki/ANSI_escape_code

44

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, chỉ đơn giản là phiên bản phê chuẩn ASCII của tổ chức ANSI. Việc sử dụng các ký tự thiết lập bit-top không được định nghĩa trong ASCII/ANSI vì nó là một bộ ký tự 7 bít.

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ó là "hệ thống mã của bất kỳ 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 là byte cuối trong một chuỗi nhiều byte, vì vậy nó thậm chí không tương thích chặt chẽ với ASCII thuần túy ... nhưng thậm chí sau đó, nó vẫn được gọi là "ANSI".

Cài đặt mặc định của Mỹ và Tây Âu, “ANSI” bản đồ đến trang mã 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 "ANSI" hoàn toàn vô dụng như một định danh mã hóa bên ngoài.

9

Ngày xửa ngày xưa Microsoft, giống như mọi người khác, đã sử dụng bộ ký tự 7 bit, và họ đã phát minh ra nó khi nó phù hợp với họ, mặc dù họ giữ ASCII như một tập hợp con. Sau đó, họ nhận ra rằng 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ư họ ISO-8859. Trong những ngày đó, nếu bạn muốn giữ 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 đã tái xuất bản các tiêu chuẩn quốc tế với thương 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 của Mỹ, không phải tiêu chuẩn quốc tế). Vì vậy, bản sao của Microsoft ISO-8859 cho biết "ANSI" trên trang bìa. Và bởi vì Microsoft đã không được sử dụng để tiêu chuẩn trong những ngày đó, họ đã không nhận ra rằng ANSI xuất bản rất nhiều tiêu chuẩn khác là tốt. 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, bởi vì họ đã không thực sự hiểu 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 đường vào 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 cái tên đó.

+0

là những thứ công nghiệp nên các lập trình viên mới trở thành tiêu chuẩn vì nó là một ngành mới? – GameDeveloper

+1

Nó không phải là một ngành công nghiệp mới bởi thời gian Microsoft được thành lập. –

1

Chỉ trong trường hợp máy tính của bạn không phải là một "phương Tây" PC và bạn không biết được mã trang được sử dụng, bạn có thể có một cái nhìn tại trang này: National Language Support (NLS) API Reference

Hoặc bạn có thể truy vấn registry của bạn:

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:\> 
Các vấn đề liên quan