Ký tự thay đổi Python ASCII

Cơ quan cấp số được gán trên Internet [IANA] ưu tiên đặt tên US-ASCII cho mã hóa ký tự này

ASCII là một trong những cột mốc quan trọng của IEEE

Tổng quan[sửa]

ASCII được phát triển từ mã điện báo. Việc sử dụng thương mại đầu tiên của nó là mã máy in từ xa bảy bit được quảng bá bởi dịch vụ dữ liệu Bell. [] Công việc về tiêu chuẩn ASCII bắt đầu vào tháng 5 năm 1961, với cuộc họp đầu tiên của Hiệp hội Tiêu chuẩn Hoa Kỳ [ASA] [nay là Viện Tiêu chuẩn Quốc gia Hoa Kỳ hoặc ANSI] X3. 2 tiểu ban. Phiên bản đầu tiên của tiêu chuẩn được xuất bản vào năm 1963, trải qua một lần sửa đổi lớn trong năm 1967 và trải qua lần cập nhật gần đây nhất vào năm 1986. So với các mã điện báo trước đó, mã Bell và ASCII được đề xuất đều được sắp xếp theo thứ tự thuận tiện hơn [i. e. , bảng chữ cái] của danh sách và các tính năng bổ sung cho các thiết bị không phải là máy in từ xa

Việc sử dụng định dạng ASCII cho Trao đổi mạng được mô tả vào năm 1969. Tài liệu đó đã chính thức được nâng lên thành Tiêu chuẩn Internet vào năm 2015

Ban đầu dựa trên bảng chữ cái tiếng Anh [hiện đại], ASCII mã hóa 128 ký tự được chỉ định thành số nguyên 7 bit như biểu đồ ASCII ở trên. Chín mươi lăm ký tự được mã hóa có thể in được. chúng bao gồm các chữ số từ 0 đến 9, chữ thường từ a đến z, chữ hoa từ A đến Z và ký hiệu dấu chấm câu. Ngoài ra, đặc điểm kỹ thuật ASCII ban đầu bao gồm 33 mã điều khiển không in có nguồn gốc từ máy Teletype;

Ví dụ: chữ i viết thường sẽ được biểu thị trong bảng mã ASCII bằng nhị phân 1101001 = thập lục phân 69 [i là chữ cái thứ chín] = thập phân 105

Mặc dù là một tiêu chuẩn của Mỹ, ASCII không có điểm mã cho xu [¢]. Nó cũng không hỗ trợ các thuật ngữ tiếng Anh có dấu phụ như résumé và jalapeño, hoặc danh từ riêng có dấu phụ như Beyoncé

Lịch sử[sửa]

ASCII [1963]. Điều khiển Hình ảnh của các điều khiển tương đương được hiển thị ở nơi chúng tồn tại hoặc một chấm màu xám nếu không

Mã Tiêu chuẩn Hoa Kỳ về Trao đổi Thông tin [ASCII] được phát triển dưới sự bảo trợ của một ủy ban của Hiệp hội Tiêu chuẩn Hoa Kỳ [ASA], được gọi là ủy ban X3, bởi X3 của nó. 2 [sau này là X3L2], và sau đó là X3 của tiểu ban đó. 2. Nhóm công tác số 4 [nay là INCITS]. ASA sau này trở thành Viện Tiêu chuẩn Hoa Kỳ [USASI],. 211 và cuối cùng trở thành Viện Tiêu chuẩn Quốc gia Hoa Kỳ [ANSI]

Với các ký tự đặc biệt và mã kiểm soát khác được điền vào, ASCII đã được xuất bản dưới dạng ASA X3. 4-1963, để lại 28 vị trí mã không có bất kỳ ý nghĩa được gán nào, dành cho tiêu chuẩn hóa trong tương lai và một mã kiểm soát không được gán. 66, 245 Có một số tranh luận vào thời điểm đó liệu có nên có nhiều ký tự điều khiển hơn là bảng chữ cái viết thường hay không. 435 Do dự không được bao lâu. trong tháng 5 năm 1963, Ban Công tác CCITT về Bảng chữ cái Điện báo Mới đã đề xuất gán các ký tự chữ thường cho các thanh 6 và 7, và Tổ chức Tiêu chuẩn hóa Quốc tế TC 97 SC 2 đã bỏ phiếu trong tháng 10 để đưa thay đổi này vào tiêu chuẩn dự thảo của mình. X3. 2. Nhóm nhiệm vụ số 4 đã bỏ phiếu chấp thuận thay đổi thành ASCII tại cuộc họp tháng 5 năm 1963. Việc định vị các chữ cái viết thường trong thanh 6 và 7 khiến các ký tự khác nhau về mẫu bit so với chữ hoa một bit, giúp đơn giản hóa việc khớp ký tự không phân biệt chữ hoa chữ thường và cấu trúc của bàn phím và máy in

Ủy ban X3 đã thực hiện các thay đổi khác, bao gồm các ký tự mới khác [ký tự dấu ngoặc nhọn và thanh dọc], đổi tên một số ký tự điều khiển [SOM trở thành phần đầu của tiêu đề [SOH]] và di chuyển hoặc xóa các ký tự khác [RU đã bị xóa]. 247–248 ASCII sau đó được cập nhật thành USAS X3. 4-1967, rồi USAS X3. 4-1968, ANSI X3. 4-1977, và cuối cùng là ANSI X3. 4-1986

Sửa đổi tiêu chuẩn ASCII

Trong X3. 15, ủy ban X3 cũng giải quyết cách truyền ASCII [bit ít quan trọng nhất trước],. 249–253  và cách ghi trên băng đục lỗ. Họ đã đề xuất tiêu chuẩn 9 rãnh cho băng từ và cố gắng xử lý một số định dạng thẻ đục lỗ.

Cân nhắc thiết kế [ chỉnh sửa ]

Độ rộng bit[sửa]

X3. 2 tiểu ban thiết kế ASCII dựa trên các hệ thống mã hóa teleprinter trước đó. Giống như các mã hóa ký tự khác, ASCII chỉ định sự tương ứng giữa các mẫu bit kỹ thuật số và ký hiệu ký tự [i. e. biểu đồ và ký tự điều khiển]. Điều này cho phép các thiết bị kỹ thuật số giao tiếp với nhau và xử lý, lưu trữ và truyền đạt thông tin định hướng ký tự như ngôn ngữ viết. Trước khi ASCII được phát triển, bảng mã được sử dụng bao gồm 26 ký tự chữ cái, 10 chữ số và từ 11 đến 25 ký hiệu đồ họa đặc biệt. Để bao gồm tất cả những thứ này và kiểm soát các ký tự tương thích với Comité Consultatif International Téléphonique et Télégraphique [CCITT] Bảng chữ cái điện báo quốc tế Không. 2 [ITA2] năm 1924, FIELDATA [1956[cần dẫn nguồn]] và EBCDIC đầu tiên [1963], cần có hơn 64 mã cho ASCII

ITA2 lần lượt dựa trên mã điện báo 5 bit mà Émile Baudot đã phát minh ra vào năm 1870 và được cấp bằng sáng chế vào năm 1874

Ủy ban đã tranh luận về khả năng có chức năng dịch chuyển [như trong ITA2], chức năng này sẽ cho phép hơn 64 mã được biểu thị bằng mã 6 bit. Trong một mã đã dịch chuyển, một số mã ký tự xác định các lựa chọn giữa các tùy chọn cho các mã ký tự sau. Nó cho phép mã hóa nhỏ gọn, nhưng kém tin cậy hơn đối với việc truyền dữ liệu, do lỗi khi truyền mã dịch chuyển thường khiến một phần dài của quá trình truyền không thể đọc được. Ủy ban tiêu chuẩn đã quyết định không dịch chuyển và do đó ASCII yêu cầu ít nhất một mã bảy bit. 215 §13. 6, 236 §4

Ủy ban đã xem xét mã tám bit, vì tám bit [octet] sẽ cho phép hai mẫu bốn bit mã hóa hiệu quả hai chữ số bằng số thập phân được mã hóa nhị phân. Tuy nhiên, nó sẽ yêu cầu tất cả việc truyền dữ liệu gửi tám bit khi bảy có thể đủ. Ủy ban đã bỏ phiếu sử dụng mã bảy bit để giảm thiểu chi phí liên quan đến truyền dữ liệu. Vì băng đục lỗ vào thời điểm đó có thể ghi tám bit ở một vị trí, nên nó cũng cho phép một bit chẵn lẻ để kiểm tra lỗi nếu muốn. 217 §c, 236 §5 Máy tám bit [với octet là kiểu dữ liệu gốc] không sử dụng kiểm tra chẵn lẻ thường đặt bit thứ tám thành 0

Tổ chức nội bộ[sửa | sửa mã nguồn]

Bản thân mã này đã được tạo mẫu sao cho hầu hết các mã điều khiển đều ở cùng nhau và tất cả các mã đồ họa đều ở cùng nhau, để dễ nhận biết. Hai cái gọi là thanh ASCII đầu tiên [32 vị trí] được dành riêng cho các ký tự điều khiển. 220, 236 8, 9] Ký tự "dấu cách" phải xuất hiện trước đồ họa để giúp sắp xếp dễ dàng hơn, do đó, nó trở thành vị trí 20hex;. 237 §10 vì lý do tương tự, nhiều dấu hiệu đặc biệt thường được sử dụng làm dấu phân cách được đặt trước các chữ số. Ủy ban đã quyết định điều quan trọng là phải hỗ trợ các bảng chữ cái 64 ký tự viết hoa và chọn tạo mẫu ASCII để có thể dễ dàng giảm xuống thành một bộ mã đồ họa 64 ký tự có thể sử dụng được,. 228, 237 §14 như đã được thực hiện trong mã DEC SIXBIT [1963]. Do đó, chữ thường không được xen kẽ với chữ hoa. Để giữ các tùy chọn có sẵn cho chữ thường và đồ họa khác, các mã đặc biệt và số được sắp xếp trước các chữ cái và chữ A được đặt ở vị trí 41hex để phù hợp với bản nháp của tiêu chuẩn tương ứng của Anh. 238 §18 Các chữ số 0–9 có tiền tố là 011, nhưng 4 bit còn lại tương ứng với các giá trị tương ứng của chúng ở dạng nhị phân, giúp việc chuyển đổi với số thập phân được mã hóa nhị phân trở nên đơn giản

Nhiều ký tự không phải chữ và số đã được định vị để tương ứng với vị trí đã thay đổi của chúng trên máy đánh chữ; . Máy đánh chữ cơ học tuân theo tiêu chuẩn thực tế do Remington No. 2 [1878], máy đánh chữ đầu tiên có phím shift và các giá trị được dịch chuyển của 23456789-"#$%_&'[] – những máy đánh chữ đầu tiên đã bỏ qua 0 và 1, thay vào đó sử dụng O [chữ o viết hoa] và l [chữ L viết thường], nhưng thay vào đó là cặp 1!0] . Do đó, trong ASCII, !"#$% được đặt trong thanh thứ hai, vị trí 1–5, tương ứng với các chữ số 1–5 trong thanh liền kề. Tuy nhiên, dấu ngoặc đơn không thể tương ứng với 9 và 0, vì vị trí tương ứng với 0 đã được lấy bởi ký tự khoảng trắng. Điều này được giải quyết bằng cách loại bỏ _ [gạch dưới] khỏi 6 và chuyển các ký tự còn lại, tương ứng với nhiều máy đánh chữ châu Âu đặt dấu ngoặc đơn với 8 và 9. Sự khác biệt này với máy đánh chữ đã dẫn đến bàn phím ghép nối bit, đáng chú ý là Teletype Model 33, sử dụng bố cục dịch chuyển trái tương ứng với ASCII, khác với máy đánh chữ cơ học truyền thống

Máy đánh chữ điện, đáng chú ý là IBM Selectric [1961], đã sử dụng một bố cục hơi khác mà trên thực tế đã trở thành tiêu chuẩn trên máy tính – theo sau IBM PC [1981], đặc biệt là Model M [1984] – và do đó việc thay đổi giá trị cho các ký hiệu trên bàn phím hiện đại đã làm . Cặp /? cũng có niên đại là Không. 2 và các cặp ,< .> đã được sử dụng trên một số bàn phím [các loại khác, bao gồm cả No. 2, không dịch chuyển , [dấu phẩy] hoặc 23456789-0 [dấu chấm] để chúng có thể được sử dụng ở dạng chữ hoa mà không cần dịch chuyển]. Tuy nhiên, ASCII đã tách cặp 23456789-1 [có niên đại là Không. 2] và sắp xếp lại các ký hiệu toán học [các quy ước khác nhau, thường là 23456789-2] thành 23456789-3

Một số ký tự máy đánh chữ phổ biến lúc bấy giờ không được đưa vào, đáng chú ý là 23456789-4, trong khi 23456789-5 được đưa vào dưới dạng dấu phụ để sử dụng quốc tế và 23456789-6 để sử dụng trong toán học, cùng với các ký tự dòng đơn giản 23456789-7 [ngoài 23456789-8 thông dụng]. Biểu tượng @ không được sử dụng ở lục địa Châu Âu và ủy ban dự kiến ​​nó sẽ được thay thế bằng chữ À có dấu trong biến thể tiếng Pháp, vì vậy @ được đặt ở vị trí 40hex, ngay trước chữ A. 243

Các mã kiểm soát cảm thấy cần thiết cho việc truyền dữ liệu là bắt đầu tin nhắn [SOM], kết thúc địa chỉ [EOA], kết thúc tin nhắn [EOM], kết thúc truyền [EOT], "bạn là ai?" . Chúng được định vị để tối đa hóa khoảng cách Hamming giữa các mẫu bit của chúng. 243–245

Thứ tự ký tự[sửa]

Thứ tự mã ASCII còn được gọi là thứ tự ASCIIbetical. Đối chiếu dữ liệu đôi khi được thực hiện theo thứ tự này thay vì thứ tự chữ cái "tiêu chuẩn" [trình tự đối chiếu]. Các sai lệch chính theo thứ tự ASCII là

  • Tất cả chữ hoa đến trước chữ thường;
  • Chữ số và nhiều dấu chấm câu đứng trước các chữ cái

Lệnh trung gian chuyển chữ hoa thành chữ thường trước khi so sánh các giá trị ASCII

Nhóm nhân vật[sửa]

Ký tự điều khiển[sửa]

Các biểu tượng ban đầu được gán cho 32 mã điều khiển, dấu cách và xóa ký tự. [SỮA-STD-188-100, 1972]

ASCII dành 32 mã đầu tiên [số 0–31 thập phân] cho các ký tự điều khiển. các mã ban đầu không nhằm mục đích đại diện cho thông tin có thể in được, mà là để điều khiển các thiết bị [chẳng hạn như máy in] sử dụng ASCII hoặc để cung cấp siêu thông tin về các luồng dữ liệu, chẳng hạn như các luồng được lưu trữ trên băng từ

Ví dụ: ký tự 10 đại diện cho chức năng "nạp dòng" [làm cho máy in đẩy giấy của nó lên] và ký tự 8 đại diện cho "xóa lùi". RFC 2822 đề cập đến các ký tự điều khiển không bao gồm dấu xuống dòng, xuống dòng hoặc khoảng trắng dưới dạng các ký tự điều khiển không phải khoảng trắng. Ngoại trừ các ký tự điều khiển quy định định dạng hướng dòng cơ bản, ASCII không xác định bất kỳ cơ chế nào để mô tả cấu trúc hoặc hình thức của văn bản trong tài liệu. Các sơ đồ khác, chẳng hạn như ngôn ngữ đánh dấu, trang địa chỉ và bố cục và định dạng tài liệu

Tiêu chuẩn ASCII ban đầu chỉ sử dụng các cụm từ mô tả ngắn cho từng ký tự điều khiển. Sự không rõ ràng mà điều này gây ra đôi khi là do cố ý, ví dụ như khi một ký tự sẽ được sử dụng hơi khác trên liên kết đầu cuối so với trên luồng dữ liệu và đôi khi là do ngẫu nhiên, chẳng hạn như với nghĩa "xóa"

Có lẽ thiết bị duy nhất có ảnh hưởng nhất ảnh hưởng đến việc diễn giải các ký tự này là Teletype Model 33 ASR, là một thiết bị đầu cuối in với tùy chọn đục lỗ/đọc băng giấy có sẵn. Băng giấy là một phương tiện rất phổ biến để lưu trữ chương trình dài hạn cho đến những năm 1980, ít tốn kém hơn và ít dễ vỡ hơn so với băng từ. Cụ thể, việc gán máy Teletype Model 33 cho các mã 17 [control-Q, DC1, còn được gọi là XON], 19 [control-S, DC3, còn được gọi là XOFF] và 127 [xóa] đã trở thành tiêu chuẩn trên thực tế. Model 33 cũng đáng chú ý vì sử dụng mô tả của control-G [mã 7, BEL, nghĩa là cảnh báo bằng âm thanh cho người vận hành] theo nghĩa đen, vì thiết bị này chứa một chiếc chuông thực tế mà nó sẽ kêu khi nhận được ký tự BEL. Bởi vì bàn phím cho phím O cũng hiển thị biểu tượng mũi tên trái [từ ASCII-1963, có ký tự này thay vì dấu gạch dưới], việc sử dụng mã 15 không tuân thủ [control-O, shift in] được hiểu là "xóa ký tự trước đó"

Khi Teletype 33 ASR được trang bị đầu đọc băng giấy tự động nhận được tín hiệu điều khiển-S [XOFF, viết tắt của từ tắt truyền], nó sẽ khiến đầu đọc băng dừng lại; . Cái gọi là kỹ thuật điều khiển luồng này đã được một số hệ điều hành máy tính đời đầu áp dụng như một tín hiệu "bắt tay" cảnh báo người gửi ngừng truyền vì sắp xảy ra tràn bộ đệm; . Trên một số hệ thống, control-S vẫn giữ nguyên ý nghĩa của nó nhưng control-Q được thay thế bằng control-S thứ hai để tiếp tục đầu ra

33 ASR cũng có thể được cấu hình để sử dụng control-R [DC2] và control-T [DC4] để bắt đầu và dừng đột dập băng;

Xóa so với xóa lùi[sửa]

Teletype không thể di chuyển đầu chữ về phía sau, vì vậy nó không có phím trên bàn phím để gửi BS [xóa lùi]. Thay vào đó, có một phím được đánh dấu RUB OUT gửi mã 127 [DEL]. Mục đích của phím này là để xóa các lỗi trong băng giấy nhập thủ công. người điều khiển phải nhấn một nút trên máy đục lỗ băng để sao lưu nó, sau đó nhập rubout, lỗ thủng này sẽ đục tất cả các lỗ và thay thế lỗi bằng một ký tự dự định sẽ bị bỏ qua. Teletypes thường được sử dụng với các máy tính rẻ hơn của Digital Equipment Corporation [DEC]; . Do đó, thiết bị đầu cuối video DEC [theo mặc định] đã gửi mã DEL cho phím được đánh dấu là "Xóa lùi" trong khi phím riêng được đánh dấu là "Xóa" gửi một chuỗi thoát;

Trình điều khiển thiết bị đầu cuối Unix chỉ có thể sử dụng một mã để xóa ký tự trước đó, điều này có thể được đặt thành BS hoặc DEL, nhưng không phải cả hai, dẫn đến các tình huống mơ hồ lặp đi lặp lại trong đó người dùng phải quyết định tùy thuộc vào thiết bị đầu cuối họ đang sử dụng [trình bao cho phép . Giả định rằng không có khóa nào gửi mã BS cho phép control+H được sử dụng cho các mục đích khác, chẳng hạn như lệnh tiền tố "trợ giúp" trong GNU Emacs

Trốn thoát[sửa]

Nhiều mã kiểm soát khác đã được gán ý nghĩa hoàn toàn khác so với mã ban đầu của chúng. Ví dụ, ký tự "thoát" [ESC, mã 27] ban đầu được dự định cho phép gửi các ký tự điều khiển khác dưới dạng chữ thay vì gọi ý nghĩa của chúng, một "chuỗi thoát". Đây là ý nghĩa tương tự của "thoát" gặp phải trong mã hóa URL, chuỗi ngôn ngữ C và các hệ thống khác trong đó một số ký tự có ý nghĩa dành riêng. Theo thời gian, cách giải thích này đã được đồng chọn và cuối cùng đã được thay đổi

Trong cách sử dụng hiện đại, một ESC được gửi đến thiết bị đầu cuối thường cho biết bắt đầu một chuỗi lệnh thường ở dạng cái gọi là "mã thoát ANSI" [hoặc đúng hơn là "Trình giới thiệu trình tự điều khiển"] từ ECMA-48 [ . Ngược lại, một ESC được gửi từ thiết bị đầu cuối thường được sử dụng như một ký tự ngoài băng được sử dụng để chấm dứt một hoạt động hoặc chế độ đặc biệt, như trong trình soạn thảo văn bản TECO và vi. Trong giao diện người dùng đồ họa [GUI] và hệ thống cửa sổ, ESC thường khiến ứng dụng hủy bỏ hoạt động hiện tại hoặc thoát [chấm dứt] hoàn toàn

Cuối dòng[sửa]

Sự mơ hồ vốn có của nhiều ký tự điều khiển, kết hợp với cách sử dụng lịch sử của chúng, đã tạo ra sự cố khi chuyển các tệp "văn bản thuần túy" giữa các hệ thống. Ví dụ tốt nhất về điều này là vấn đề dòng mới trên các hệ điều hành khác nhau. Các máy điện báo yêu cầu một dòng văn bản được kết thúc bằng cả "sự quay trở lại vận chuyển" [di chuyển đầu in đến đầu dòng] và "nạp dòng" [di chuyển giấy một dòng mà không di chuyển đầu in]. Cái tên "carriage return" xuất phát từ thực tế là trên máy đánh chữ thủ công, cỗ xe giữ tờ giấy di chuyển trong khi các thanh đánh chữ chạm vào dải băng vẫn đứng yên. Toàn bộ giá đỡ phải được đẩy [quay lại] sang bên phải để định vị giấy cho dòng tiếp theo

Hệ điều hành DEC [OS/8, RT-11, RSX-11, RSTS, TOPS-10, v.v. ] đã sử dụng cả hai ký tự để đánh dấu phần cuối của một dòng để thiết bị điều khiển [ban đầu là máy Teletype] hoạt động. Vào thời điểm cái gọi là "TTY thủy tinh" [sau này được gọi là CRT hoặc "thiết bị đầu cuối câm"] xuất hiện, quy ước đã được thiết lập tốt đến mức khả năng tương thích ngược bắt buộc phải tiếp tục tuân theo nó. Khi Gary Kildall tạo ra CP/M, anh ấy đã lấy cảm hứng từ một số quy ước giao diện dòng lệnh được sử dụng trong hệ điều hành RT-11 của DEC

Cho đến khi PC DOS được giới thiệu vào năm 1981, IBM không có ảnh hưởng gì đến việc này vì hệ điều hành những năm 1970 của họ đã sử dụng mã hóa EBCDIC thay vì ASCII, và họ hướng tới đầu vào thẻ đục lỗ và đầu ra máy in dòng mà trên đó khái niệm "trả về vận chuyển" là . PC DOS của IBM [cũng được Microsoft tiếp thị là MS-DOS] kế thừa quy ước nhờ dựa trên CP/M một cách lỏng lẻo và Windows đến lượt nó kế thừa nó từ MS-DOS

Yêu cầu hai ký tự để đánh dấu phần cuối của một dòng gây ra sự phức tạp và mơ hồ không cần thiết về cách diễn giải từng ký tự khi gặp chính nó. Để đơn giản hóa vấn đề, các luồng dữ liệu văn bản thuần túy, bao gồm các tệp, trên Multics chỉ sử dụng nguồn cấp dữ liệu dòng [LF] làm đầu cuối dòng. 357 Các hệ thống tương tự Unix và Unix cũng như các hệ thống Amiga đã áp dụng quy ước này từ Multics. Mặt khác, Macintosh OS, Apple DOS và ProDOS ban đầu chỉ sử dụng dấu xuống dòng [CR] làm dấu kết thúc dòng; . Radio Shack TRS-80 cũng sử dụng một CR duy nhất để kết thúc các dòng

Các máy tính được kết nối với ARPANET bao gồm các máy chạy các hệ điều hành như TOPS-10 và TENEX sử dụng các đầu cuối dòng CR-LF; . Giao thức Telnet đã xác định "Thiết bị đầu cuối ảo mạng" [NVT] ASCII, để các kết nối giữa các máy chủ có quy ước kết thúc dòng và bộ ký tự khác nhau có thể được hỗ trợ bằng cách truyền định dạng văn bản tiêu chuẩn qua mạng. Telnet đã sử dụng ASCII cùng với các kết thúc dòng CR-LF và phần mềm sử dụng các quy ước khác sẽ dịch giữa các quy ước cục bộ và NVT. Giao thức truyền tệp đã sử dụng giao thức Telnet, bao gồm việc sử dụng Thiết bị đầu cuối ảo mạng, để sử dụng khi truyền lệnh và truyền dữ liệu ở chế độ ASCII mặc định. Điều này làm tăng thêm độ phức tạp cho việc triển khai các giao thức đó và cho các giao thức mạng khác, chẳng hạn như các giao thức được sử dụng cho E-mail và World Wide Web, trên các hệ thống không sử dụng quy ước kết thúc dòng CR-LF của NVT

Kết thúc tệp/luồng[sửa]

Màn hình PDP-6 và TOPS-10 kế nhiệm PDP-10 của nó, đã sử dụng control-Z [SUB] làm chỉ báo kết thúc tệp cho đầu vào từ thiết bị đầu cuối. Một số hệ điều hành như CP/M chỉ theo dõi độ dài tệp theo đơn vị khối đĩa và sử dụng control-Z để đánh dấu phần cuối của văn bản thực trong tệp. Vì những lý do này, EOF, hoặc phần cuối của tệp, đã được sử dụng một cách thông tục và theo quy ước như một từ viết tắt gồm ba chữ cái cho control-Z thay vì SUBstolarship. Mã kết thúc văn bản [ETX], còn được gọi là control-C, không phù hợp vì nhiều lý do, trong khi việc sử dụng Z làm mã kiểm soát để kết thúc tệp tương tự như vị trí của nó ở cuối bảng chữ cái và . Một quy ước phổ biến trong lịch sử và vẫn còn phổ biến sử dụng quy ước mã ETX để ngắt và tạm dừng chương trình thông qua luồng dữ liệu đầu vào, thường là từ bàn phím

Trong thư viện C và các quy ước Unix, ký tự null được sử dụng để kết thúc chuỗi văn bản;

Biểu đồ mã kiểm soát[sửa mã nguồn]

Các biểu diễn khác có thể được sử dụng bởi thiết bị chuyên dụng, ví dụ như đồ họa ISO 2047 hoặc số thập lục phân

Ký tự in được[sửa]

Các mã 20hex đến 7Ehex, được gọi là các ký tự có thể in được, đại diện cho các chữ cái, chữ số, dấu chấm câu và một vài ký hiệu linh tinh. Tổng cộng có 95 ký tự in được

Mã 20hex, ký tự "dấu cách", biểu thị khoảng cách giữa các từ, do phím cách của bàn phím tạo ra. Vì ký tự khoảng trắng được coi là một đồ họa vô hình [chứ không phải ký tự điều khiển]. 223  nó được liệt kê trong bảng bên dưới thay vì trong phần trước

Mã 7Fhex tương ứng với ký tự điều khiển "xóa" [DEL] không in được và do đó được bỏ qua trong biểu đồ này; . Các phiên bản trước của ASCII sử dụng mũi tên lên thay cho dấu mũ [5Ehex] và mũi tên trái thay cho dấu gạch dưới [5Fhex]

BinaryOctDecHexGlyph196319651967010 00000403220 space010 00010413321!010 00100423422"010 00110433523#010 01000443624$010 01010453725%010 01100463826&010 01110473927'010 10000504028[010 10010514129]010 1010052422A*010 1011053432B+010 1100054442C,010 1101055452D-010 1110056462E.010 1111057472F/011 000006048300011 000106149311011 001006250322011 001106351333011 010006452344011 010106553355011 011006654366011 011106755377011 100007056388011 100107157399011 1010072583A:011 1011073593B;011 1100074603C011 1111077633F?100 00001006440@`@100 00011016541A100 00101026642B100 00111036743C100 01001046844D100 01011056945E100 01101067046F100 01111077147G100 10001107248H100 10011117349I100 1010112744AJ100 1011113754BK100 1100114764CL100 1101115774DM100 1110116784EN100 1111117794FO101 00001208050P101 00011218151Q101 00101228252R101 00111238353S101 01001248454T101 01011258555U101 01101268656V101 01111278757W101 10001308858X101 10011318959Y101 1010132905AZ101 1011133915B[101 1100134925C\~\101 1101135935D]101 1110136945E↑^101 1111137955F←_110 00001409660@`110 00011419761a110 00101429862b110 00111439963c110 010014410064d110 010114510165e110 011014610266f110 011114710367g110 100015010468h110 100115110569i110 10101521066Aj110 10111531076Bk110 11001541086Cl110 11011551096Dm110 11101561106En110 11111571116Fo111 000016011270p111 000116111371q111 001016211472r111 001116311573s111 010016411674t111 010116511775u111 011016611876v111 011116711977w111 100017012078x111 100117112179y111 10101721227Az111 10111731237B{111 11001741247CACK¬|111 11011751257D}111 11101761267EESC|~

Bộ ký tự[sửa]

ASCII lần đầu tiên được sử dụng thương mại vào năm 1963 dưới dạng mã máy in từ xa bảy bit cho mạng TWX [TeletypeWriter eXchange] của Điện thoại & Điện báo Hoa Kỳ. TWX ban đầu sử dụng ITA2 năm bit trước đó, cũng được sử dụng bởi hệ thống máy in từ xa Telex cạnh tranh. Bob Bemer đã giới thiệu các tính năng như trình tự thoát. Đồng nghiệp người Anh của ông, Hugh McGregor Ross, đã giúp phổ biến tác phẩm này – theo Bemer, "nhiều đến mức mã sau này trở thành ASCII lần đầu tiên được gọi là Mã Bemer–Ross ở Châu Âu". Do có nhiều công trình nghiên cứu về ASCII, Bemer được gọi là "cha đẻ của ASCII"

Ngày 11-3-1968, Tổng thống Hoa Kỳ Lyndon B. Johnson yêu cầu tất cả các máy tính được Chính phủ Liên bang Hoa Kỳ mua phải hỗ trợ ASCII, nêu rõ

Tôi cũng đã chấp thuận các khuyến nghị của Bộ trưởng Thương mại [Luther H. Hodges] liên quan đến các tiêu chuẩn để ghi lại Mã tiêu chuẩn để trao đổi thông tin trên băng từ và băng giấy khi chúng được sử dụng trong hoạt động của máy tính. Tất cả các máy tính và cấu hình thiết bị liên quan được đưa vào kho của Chính phủ Liên bang vào và sau ngày 1 tháng 7 năm 1969, phải có khả năng sử dụng Mã tiêu chuẩn để trao đổi thông tin và các định dạng được quy định bởi tiêu chuẩn băng từ và băng giấy khi các phương tiện này được sử dụng

ASCII là mã hóa ký tự phổ biến nhất trên World Wide Web cho đến tháng 12 năm 2007, khi mã hóa UTF-8 vượt qua nó;

Các biến thể và dẫn xuất[sửa | sửa mã nguồn]

Khi công nghệ máy tính lan rộng khắp thế giới, các cơ quan và tập đoàn tiêu chuẩn khác nhau đã phát triển nhiều biến thể của ASCII để tạo điều kiện thuận lợi cho việc diễn đạt các ngôn ngữ không phải tiếng Anh sử dụng bảng chữ cái dựa trên tiếng La Mã. Người ta có thể phân loại một số biến thể này là "phần mở rộng ASCII", mặc dù một số sử dụng sai thuật ngữ đó để biểu thị tất cả các biến thể, bao gồm cả những biến thể không bảo tồn bản đồ ký tự của ASCII trong phạm vi 7 bit. Hơn nữa, các phần mở rộng ASCII cũng đã bị dán nhãn sai thành ASCII

Mã 7 bit[sửa]

Ngay từ đầu trong quá trình phát triển, ASCII được dự định chỉ là một trong số các biến thể quốc gia của tiêu chuẩn mã ký tự quốc tế

Các cơ quan tiêu chuẩn quốc tế khác đã phê duyệt mã hóa ký tự như ISO 646 [1967] giống hệt hoặc gần giống với ASCII, với phần mở rộng cho các ký tự bên ngoài bảng chữ cái tiếng Anh và các ký hiệu được sử dụng bên ngoài Hoa Kỳ, chẳng hạn như ký hiệu cho đồng bảng Anh của Vương quốc Anh . g. với mã trang 1104. Hầu như mọi quốc gia đều cần một phiên bản ASCII được điều chỉnh, vì ASCII chỉ phù hợp với nhu cầu của Hoa Kỳ và một số quốc gia khác. Ví dụ: Canada có phiên bản riêng hỗ trợ các ký tự tiếng Pháp

Nhiều quốc gia khác đã phát triển các biến thể của ASCII để bao gồm các chữ cái không phải tiếng Anh [e. g. é, ñ, ß, Ł], ký hiệu tiền tệ [e. g. £, ¥], v.v. Xem thêm YUSCII [Nam Tư]

Nó sẽ chia sẻ hầu hết các ký tự chung, nhưng gán các ký tự hữu ích cục bộ khác cho một số điểm mã dành riêng cho "sử dụng quốc gia". Tuy nhiên, bốn năm trôi qua kể từ khi xuất bản ASCII-1963 và lần đầu tiên ISO chấp nhận khuyến nghị quốc tế trong năm 1967 đã khiến các lựa chọn của ASCII cho các ký tự sử dụng quốc gia dường như là tiêu chuẩn thực tế cho thế giới, gây nhầm lẫn và không tương thích với các quốc gia khác.

ISO/IEC 646, giống như ASCII, là bộ ký tự 7 bit. Nó không cung cấp bất kỳ mã bổ sung nào, do đó, các điểm mã giống nhau đã mã hóa các ký tự khác nhau ở các quốc gia khác nhau. Mã thoát được định nghĩa để chỉ ra biến thể quốc gia nào được áp dụng cho một đoạn văn bản, nhưng chúng hiếm khi được sử dụng, vì vậy thường không thể biết biến thể nào sẽ hoạt động và do đó, mã đại diện cho ký tự nào và nói chung, văn bản-

Vì các ký tự ngoặc và ngoặc của ASCII được gán cho các điểm mã "sử dụng theo quốc gia" được sử dụng cho các chữ cái có dấu trong các biến thể quốc gia khác của ISO/IEC 646, tiếng Đức, tiếng Pháp hoặc tiếng Thụy Điển, v.v. lập trình viên sử dụng biến thể quốc gia của ISO/IEC 646, thay vì ASCII, phải viết và do đó phải đọc một số thứ chẳng hạn như

23456789-9

thay vì

"#$%_&'[]0

Các bộ ba C được tạo ra để giải quyết vấn đề này cho ANSI C, mặc dù việc giới thiệu muộn và việc triển khai không nhất quán trong các trình biên dịch đã hạn chế việc sử dụng chúng. Nhiều lập trình viên giữ máy tính của họ trên US-ASCII, vì vậy văn bản thuần túy bằng tiếng Thụy Điển, tiếng Đức, v.v. [ví dụ: trong e-mail hoặc Usenet] chứa "{, }" và các biến thể tương tự ở giữa các từ, điều mà các lập trình viên đã quen thuộc. Ví dụ, một lập trình viên người Thụy Điển gửi thư cho một lập trình viên khác hỏi liệu họ có nên đi ăn trưa không, có thể nhận được "N{ jag har sm. rg}sar" làm câu trả lời, nên là "Nä jag har smörgåsar" nghĩa là "Không, tôi có bánh mì"

Ở Nhật Bản và Hàn Quốc, kể từ những năm 2020, một biến thể của ASCII được sử dụng, trong đó dấu gạch chéo ngược [5C hex] được hiển thị là ¥ [ký hiệu Yên, ở Nhật Bản] hoặc ₩ [ký hiệu Won, ở Hàn Quốc]. Điều này có nghĩa là, ví dụ, đường dẫn tệp C. \Users\Smith được hiển thị là C. ¥Người dùng¥Smith [tại Nhật Bản] hoặc C. ₩Users₩Smith [ở Hàn Quốc]

Mã 8 bit[sửa mã nguồn]

Cuối cùng, khi các máy tính 8-, 16- và 32-bit [và sau này là 64-bit] bắt đầu thay thế các máy tính 12-, 18- và 36-bit làm tiêu chuẩn, thì việc sử dụng một byte 8-bit trở nên phổ biến. . Trong hầu hết các trường hợp, chúng được phát triển dưới dạng phần mở rộng thực sự của ASCII, giữ nguyên ánh xạ ký tự ban đầu, nhưng thêm các định nghĩa ký tự bổ sung sau 128 ký tự đầu tiên [i. e. , 7-bit] ký tự

Mã hóa bao gồm ISCII [Ấn Độ], VISCII [Việt Nam]. Mặc dù các mã hóa này đôi khi được gọi là ASCII, ASCII thực sự chỉ được xác định nghiêm ngặt theo tiêu chuẩn ANSI

Hầu hết các hệ thống máy tính gia đình ban đầu đều phát triển bộ ký tự 8-bit của riêng chúng có chứa các nét vẽ đường thẳng và hình tượng của trò chơi, đồng thời thường điền vào một số hoặc tất cả các ký tự điều khiển từ 0 đến 31 với nhiều đồ họa hơn. Máy tính Kaypro CP/M đã sử dụng 128 ký tự "trên" cho bảng chữ cái Hy Lạp

Mã PETSCII mà Commodore International sử dụng cho các hệ thống 8 bit của họ có lẽ là duy nhất trong số các mã sau năm 1970 dựa trên ASCII-1963, thay vì ASCII-1967 phổ biến hơn, chẳng hạn như được tìm thấy trên máy tính ZX Spectrum. Máy tính và máy tính 8 bit Atari cũng sử dụng các biến thể ASCII

IBM PC đã xác định trang mã 437, thay thế các ký tự điều khiển bằng các ký hiệu đồ họa như mặt cười và ánh xạ các ký tự đồ họa bổ sung vào 128 vị trí phía trên. Các hệ điều hành như DOS đã hỗ trợ các trang mã này và các nhà sản xuất PC của IBM đã hỗ trợ chúng trong phần cứng. Digital Equipment Corporation đã phát triển Bộ ký tự đa quốc gia [DEC-MCS] để sử dụng trong thiết bị đầu cuối VT220 phổ biến như một trong những tiện ích mở rộng đầu tiên được thiết kế cho các ngôn ngữ quốc tế hơn là đồ họa khối. Macintosh đã định nghĩa Mac OS Roman và Postcript cũng đã định nghĩa một bộ, cả hai đều chứa cả chữ cái quốc tế và dấu chấm câu chính tả thay vì đồ họa, giống như bộ ký tự hiện đại

Tiêu chuẩn ISO/IEC 8859 [có nguồn gốc từ DEC-MCS] cuối cùng đã cung cấp một tiêu chuẩn mà hầu hết các hệ thống đã sao chép [ít nhất là chính xác như chúng đã sao chép ASCII, nhưng có nhiều thay thế]. Một tiện ích mở rộng phổ biến khác do Microsoft thiết kế, Windows-1252 [thường bị gắn nhãn sai là ISO-8859-1], đã thêm các dấu chấm câu chính tả cần thiết cho in văn bản truyền thống. ISO-8859-1, Windows-1252 và ASCII 7 bit gốc là các mã hóa ký tự phổ biến nhất cho đến năm 2008 khi UTF-8 trở nên phổ biến hơn

ISO/IEC 4873 đã giới thiệu 32 mã kiểm soát bổ sung được xác định trong phạm vi thập lục phân 80–9F, như một phần của việc mở rộng mã hóa ASCII 7 bit để trở thành hệ thống 8 bit

Unicode [ chỉnh sửa ]

Unicode và Bộ ký tự phổ quát ISO/IEC 10646 [UCS] có dãy ký tự rộng hơn nhiều và các dạng mã hóa khác nhau của chúng đã bắt đầu thay thế nhanh chóng ISO/IEC 8859 và ASCII trong nhiều môi trường. Mặc dù ASCII bị giới hạn ở 128 ký tự, Unicode và UCS hỗ trợ nhiều ký tự hơn bằng cách tách các khái niệm về nhận dạng duy nhất [sử dụng số tự nhiên được gọi là điểm mã] và mã hóa [sang định dạng nhị phân 8-, 16- hoặc 32-bit, được gọi là UTF-

ASCII được tích hợp vào bộ ký tự Unicode [1991] làm 128 ký hiệu đầu tiên, vì vậy các ký tự ASCII 7 bit có cùng mã số trong cả hai bộ. Điều này cho phép UTF-8 tương thích ngược với ASCII 7 bit, vì tệp UTF-8 chỉ chứa các ký tự ASCII giống hệt với tệp ASCII chứa cùng một chuỗi ký tự. Quan trọng hơn nữa, khả năng tương thích về phía trước được đảm bảo vì phần mềm chỉ nhận dạng các ký tự ASCII 7 bit là đặc biệt và không thay đổi byte với bộ bit cao nhất [như thường được thực hiện để hỗ trợ các phần mở rộng ASCII 8 bit như ISO-8859-1]

Mã ASCII cho ca là gì?

Mã khóa Ascii sang Flash ActionScript

Mã hóa ASCII trong Python là gì?

Phương thức ascii[] của Python. ASCII là viết tắt của Mã tiêu chuẩn Mỹ để trao đổi thông tin. Đó là tiêu chuẩn mã hóa ký tự sử dụng các số từ 0 đến 127 để biểu thị các ký tự tiếng Anh . Ví dụ: mã ASCII cho ký tự A là 65 và 90 cho ký tự Z.

Chủ Đề