Bukharbaeva N.A. Mã hóa thông tin văn bản Krakozyabry và phương pháp đối phó với chúng. Phần mở rộng ASCII cho Nga

Sự liên quan. Thực hiện công nghệ thông tinảnh hưởng đến công nghệ của luồng tài liệu trong và giữa các tổ chức và giữa bởi người dùng cá nhân. Tầm quan trọng lớn trong lĩnh vực này có được quản lý tài liệu điện tử, cho phép bạn từ bỏ phương tiện giấy (giảm tỷ trọng của chúng trong tổng luồng) và trao đổi tài liệu giữa các thực thể trong ở dạng điện tử. Ưu điểm của phương pháp này là rõ ràng: giảm chi phí xử lý và lưu trữ tài liệu cũng như tìm kiếm nhanh chóng. Tuy nhiên, việc bỏ quản lý văn bản giấy đã nảy sinh một số vấn đề liên quan đến việc đảm bảo tính toàn vẹn của tài liệu được truyền đi và xác thực tính xác thực của tác giả.

Mục tiêu của công việc.Đưa ra các khái niệm cơ bản về chủ đề “Mã hóa thông tin văn bản”, phản ánh khả năng của kẻ tấn công khi thực hiện các mối đe dọa nhằm vi phạm tính toàn vẹn của tin nhắn được truyền đi và đề xuất cách giải quyết vấn đề.

Mã là gì? Mã số là một hệ thống ký hiệu để trình bày thông tin.

Mã hóa– là sự trình bày thông tin một cách thuận tiện hình thức thay thế sử dụng một số mã để truyền, xử lý hoặc lưu trữ và giải mã là quá trình khôi phục lại hình thức trình bày thông tin ban đầu.

Máy tính cá nhân xử lý thông tin số, văn bản, đồ họa, âm thanh và video. Trong máy tính, nó được biểu thị bằng mã nhị phân, vì vậy nếu sử dụng bảng chữ cái gồm hai ký tự - 0 và 1. Trong mã nhị phân, nó được biểu diễn dễ dàng nhất dưới dạng xung điện, sự vắng mặt (0) và sự hiện diện (1). Kiểu mã hóa này được gọi là nhị phân.

Các yếu tố thông tin được mã hóa:

Các chữ cái, từ và cụm từ của ngôn ngữ tự nhiên;

Dấu chấm câu, phép tính số học và logic, v.v.;

Thông tin di truyền, v.v.

Bản thân các dấu hiệu hoạt động và toán tử so sánh là ký hiệu mã, đại diện cho các chữ cái và sự kết hợp của các chữ cái, số, ký hiệu đồ họa, xung điện từ, ánh sáng và tín hiệu âm thanh vân vân.

Các phương pháp mã hóa:số(dùng số) tượng trưng(sử dụng ký tự bảng chữ cái văn bản nguồn) Và đồ họa(sử dụng hình ảnh, biểu tượng)

Mục tiêu mã hóa:

A) Thuận tiện trong việc lưu trữ, xử lý, truyền tải và trao đổi thông tin giữa các đơn vị;

B) Trực quan hóa màn hình;

C) Xác định đối tượng, chủ thể;

D) Che giấu thông tin bí mật.

Phân biệt Cấp mộtđa cấp mã hóa thông tin. Mã hóa một cấp là các tín hiệu ánh sángđèn giao thông. Biểu diễn đa cấp của hình ảnh trực quan (đồ họa) dưới dạng tệp ảnh. Đầu tiên, hình ảnh trực quan được chia thành các pixel, mỗi phần riêng lẻ của hình ảnh được mã hóa bởi một phần tử cơ bản và phần tử đó lần lượt được mã hóa thành một tập hợp các màu (RGB: đỏ - đỏ, lục - lục, lam - xanh lam) với cường độ tương ứng, được biểu diễn dưới dạng giá trị số(bộ số này được mã hóa trong định dạng jpeg, png, v.v.). Cuối cùng, các số kết quả được mã hóa dưới dạng tín hiệu điện từ để truyền qua các kênh hoặc khu vực liên lạc. Bản thân các số khi được xử lý bằng phần mềm sẽ được trình bày theo hệ thống mã hóa số được chấp nhận.

Phân biệt có thể đảo ngượckhông thể đảo ngược mã hóa. Với khả năng đảo ngược, có thể tái tạo lại tin nhắn một cách rõ ràng mà không làm giảm chất lượng, chẳng hạn như mã hóa bằng mã Morse. Nếu không thể đảo ngược, việc khôi phục rõ ràng hình ảnh gốc là không thể. Ví dụ: mã hóa thông tin nghe nhìn ( định dạng jpg, mp3 hoặc avi) hoặc băm.

Hiện hữu công cộngbí mật các hệ thống mã hóa. Cái trước được sử dụng để tạo điều kiện thuận lợi cho việc trao đổi thông tin, cái sau - để che giấu thông tin đó với người ngoài.

Mã hóa thông tin văn bản. Người dùng xử lý văn bản bao gồm các chữ cái, số, dấu chấm câu và các thành phần khác.

Để mã hóa một ký tự bạn cần 1 byte bộ nhớ hoặc 8 bit. Sử dụng một công thức đơn giản kết nối số lượng sự kiện có thể xảy ra (K) và lượng thông tin (I), chúng tôi tính toán có thể mã hóa bao nhiêu ký hiệu khác nhau: K = 2^I = 28 = 256. Để mã hóa thông tin văn bản, người ta sử dụng bảng chữ cái có dung lượng 256 ký tự.

Nguyên tắc mã hóa nhất định là mỗi ký tự (chữ cái, ký hiệu) có mã nhị phân riêng từ 00000000 đến 11111111.

Có năm bảng mã hóa khác nhau để mã hóa các chữ cái trong bảng chữ cái tiếng Nga (KOI - 8, SR1251, SR866, Mas, ISO). Văn bản được mã hóa trong một bảng sẽ không được hiển thị chính xác trong bảng mã khác:

Đối với một mã nhị phân trong các bảng khác nhau các ký hiệu khác nhau tương ứng:

Bảng 1 - Sự tương ứng của các ký hiệu khác nhau với mã nhị phân

Mã nhị phân Mã thập phân KOI8 CP1251 CP866 Mas ISO
11000010 194 B TRONG - - T

Việc chuyển mã tài liệu văn bản được thực hiện bởi các chương trình được tích hợp trong trình soạn thảo và xử lý văn bản. Kể từ đầu năm 1997 Microsoft Office hỗ trợ mới mã hóa Unicode, nó có thể mã hóa không phải 256 mà là 655369 ký tự (2 byte bắt đầu được phân bổ cho mỗi ký tự).

Bit và byte. Một con số được máy nhận biết chứa một lượng thông tin nhất định. Nó bằng một bit. Điều này áp dụng cho mọi số 0 tạo nên một hoặc một chuỗi thông tin được mã hóa khác. Theo đó, lượng thông tin trong mọi trường hợp có thể được xác định đơn giản bằng cách biết số ký tự trong chuỗi mã nhị phân. Chúng sẽ có số lượng bằng nhau. 2 chữ số trong mã mang 2 bit thông tin, 10 chữ số – 10 bit, v.v. Nguyên tắc xác định khối lượng thông tin:

Hình 1 - định nghĩa về khối lượng thông tin

Vấn đề toàn vẹn thông tin. Vấn đề về tính toàn vẹn thông tin đã đi được một chặng đường dài kể từ khi ra đời cho đến ngày nay. Ban đầu có hai cách giải quyết vấn đề: sử dụng phương pháp mật mã bảo vệ thông tin và lưu trữ dữ liệu cũng như kiểm soát phần mềm và phần cứng việc truy cập vào dữ liệu và tài nguyên hệ thống máy tính. Điều đáng lưu ý là vào đầu những năm 80, hệ thống máy tính được phân phối kém, công nghệ toàn cầu và địa phương mạng máy tínhđang ở giai đoạn phát triển ban đầu và những nhiệm vụ này đã được giải quyết thành công.

Phương pháp xử lý, truyền tải và lưu trữ hiện đại bảo mật thông tinđã góp phần làm xuất hiện các mối đe dọa liên quan đến khả năng mất mát, bóp méo và tiết lộ dữ liệu được gửi đến hoặc thuộc về những người dùng khác. Vì vậy, đảm bảo tính toàn vẹn của thông tin là một trong những lĩnh vực phát triển CNTT hàng đầu.

Bảo mật thông tin đề cập đến việc bảo vệ thông tin khỏi việc tiêu thụ bất hợp pháp: làm quen, chuyển đổi và phá hủy.

Phân biệt tự nhiên (không phụ thuộc vào hoạt động của con người)nhân tạo (do hoạt động của con người gây ra) các mối đe dọa an ninh thông tin. Tùy theo động cơ của chúng, động cơ nhân tạo được chia thành vô ý (vô tình) và cố ý (cố ý).

Đảm bảo rằng tin nhắn không bị sửa đổi trong quá trình truyền là cần thiết cho cả người gửi và người nhận. e-mail. Người nhận phải có khả năng nhận ra sự thật rằng tài liệu đã bị bóp méo.

Vấn đề xác thực danh tính của tác giả tin nhắn là để đảm bảo rằng không chủ thể nào có thể ký bằng tên khác ngoài tên của mình. Trong luồng tài liệu giấy thông thường, thông tin trong tài liệu và chữ ký viết tay của tác giả được liên kết chặt chẽ với Phương tiện vật lý(giấy). Đối với quản lý tài liệu điện tử, không có sự kết nối chặt chẽ giữa thông tin và phương tiện vật lý.

Hãy xem xét các phương pháp hack hệ thống máy tính, tất cả các nỗ lực được chia thành 3 nhóm:
1. Tấn công cấp độ hệ điều hành: đánh cắp mật khẩu, quét ổ cứng máy tính, thu gom rác (có quyền truy cập vào các đối tượng từ xa trong thùng rác), chạy chương trình thay mặt người dùng, sửa đổi mã hoặc dữ liệu của hệ thống con, v.v.
2. Tấn công ở cấp độ hệ thống quản lý cơ sở dữ liệu: 2 kịch bản, trong trường hợp đầu tiên là kết quả các phép tính toán học trên các trường số DBMS được làm tròn xuống và sự khác biệt được tổng hợp trong một bản ghi DBMS khác; trong trường hợp thứ hai, tin tặc có quyền truy cập vào dữ liệu thống kê
3. Tấn công ở cấp độ phần mềm mạng. Phần mềm mạng (NOS) dễ bị tổn thương nhất: chặn tin nhắn trên bộ định tuyến, tạo bộ định tuyến giả, xâm nhập tin nhắn, từ chối dịch vụ

Hãy để chúng tôi liệt kê các khả năng của kẻ tấn công khi thực hiện các mối đe dọa nhằm vi phạm tính toàn vẹn của các tin nhắn được truyền đi và tính xác thực của quyền tác giả của chúng:

A) Đánh chặn chủ động. Kẻ xâm nhập chặn tin nhắn được truyền đi bằng cách thay đổi chúng.

B) Lễ hội hóa trang. Kẻ xâm nhập gửi văn bản đến thuê bao B, ký tên thuê bao A.

TRONG) Những kẻ phản bội. Thuê bao A khẳng định rằng anh ta không gửi tin nhắn cho thuê bao B, mặc dù thực tế là anh ta đã gửi. Trong trường hợp này, thuê bao A là kẻ tấn công.

G) Thay thế. Thuê bao B thay đổi/tạo văn bản mới, khai nhận đã nhận được từ thuê bao A. Người dùng không trung thực là người nhận tin nhắn B.

Để phân tích tính toàn vẹn của thông tin, một phương pháp được sử dụng dựa trên việc tính toán tổng kiểm tra của tin nhắn được truyền và hàm băm (một thuật toán cho phép một tin nhắn có độ dài bất kỳ được biểu diễn dưới dạng giá trị ngắn có độ dài cố định).

H và ở tất cả các giai đoạn vòng đời có mối đe dọa đối với CI (toàn vẹn thông tin):

Tại xử lý thông tin Vi phạm DI xảy ra do trục trặc kỹ thuật, thuật toán và lỗi phần mềm, lỗi và hành động phá hoại của nhân viên dịch vụ, sự can thiệp từ bên ngoài, các chương trình phá hoại và độc hại (vi rút, sâu).

Trong tiến trình chuyển nhượng thông tin – các loại can thiệp khác nhau có nguồn gốc tự nhiên và nhân tạo. Có thể bóp méo, phá hủy và chặn thông tin.

Trong tiến trình kho mối đe dọa chính là truy cập trái phép nhằm mục đích sửa đổi thông tin, phần mềm độc hại (vi rút, sâu, bom logic) và trục trặc kỹ thuật.

Trong tiến trình sự lão hóa– mất đi các công nghệ có khả năng tái tạo thông tin và sự lão hóa vật lý của các vật mang thông tin.

Các mối đe dọa đối với thông tin số phát sinh trong toàn bộ vòng đời của thông tin từ thời điểm xuất hiện cho đến khi bắt đầu bị loại bỏ.

Các biện pháp ngăn chặn rò rỉ thông tin qua các kênh kỹ thuật bao gồm kiểm tra cơ sở để phát hiện thiết bị nghe lén, cũng như đánh giá tính bảo mật của cơ sở khỏi khả năng rò rỉ thông tin bằng các phương pháp chặn từ xa và kiểm tra phương tiện nơi diễn ra các cuộc trò chuyện bí mật.

Đảm bảo tính toàn vẹn thông tin.Để đảm bảo CI một điều kiện cần thiết là sự sẵn có của độ tin cậy cao phương tiện kỹ thuật(TS), bao gồm các thành phần phần cứng và/hoặc phần mềm và các phương pháp phần mềm khác nhau giúp mở rộng đáng kể khả năng đảm bảo tính bảo mật của thông tin được lưu trữ. TS cung cấp khả năng chịu lỗi cao và bảo vệ thông tin khỏi mối đe dọa có thể. Chúng bao gồm các phương tiện bảo vệ chống lại xung điện từ (EMP). Hầu hết phương pháp hiệu quả giảm cường độ của EMR là che chắn- đặt thiết bị trong vỏ dẫn điện để ngăn chặn sự xâm nhập của trường điện từ.

Phương pháp tổ chức bao gồm kiểm soát truy cập, tổ chức truy cập thông tin về thiết bị được sử dụng và bao gồm một danh sách hoạt động khá lớn, từ việc lựa chọn nhân viên để làm việc với thiết bị và tài liệu. Trong số đó có các công nghệ bảo vệ, xử lý và lưu trữ tài liệu, chứng nhận cơ sở và khu vực làm việc cũng như các quy trình bảo vệ thông tin khỏi các hành động vô tình/trái phép. Đặc biệt chú ý chú ý đến việc bảo vệ hệ điều hành (OS), đảm bảo hoạt động của hầu hết các thành phần trong hệ thống. Cơ chế kiểm soát truy cập hiệu quả nhất cho HĐH là môi trường phần mềm biệt lập (ISE). Khả năng chống lại của hệ thống thông tin đối với các chương trình phá hoại và độc hại khác nhau làm tăng hệ thống thông tin, đảm bảo tính toàn vẹn của thông tin.

Bảo vệ chống virus. Hiện tại thuộc virus máy tính thường được hiểu Mã chương trình, có khả năng tạo bản sao của chính nó và có cơ chế nhúng các bản sao này vào các đối tượng thực thi hệ thống máy tính. Các chương trình độc hại (vi-rút) có nhiều loại và loại, chỉ khác nhau ở cách chúng ảnh hưởng tập tin khác nhau, vị trí trong bộ nhớ máy tính hoặc các chương trình, đối tượng ảnh hưởng. Đặc tính chính của vi rút, giúp phân biệt chúng với nhiều chương trình và khiến chúng trở nên nguy hiểm nhất, là khả năng sinh sản của chúng.

CI cung cấp việc sử dụng các chương trình chống vi-rút, nhưng không có chương trình nào đảm bảo việc phát hiện một loại vi-rút không xác định. Máy quét heuristic được sử dụng không phải lúc nào cũng cung cấp chẩn đoán chính xác. Một ví dụ về những lỗi như vậy là hai chương trình chống virus chạy trên cùng một máy tính: các tệp từ một phần mềm chống vi-rút bị phần mềm chống vi-rút khác nhầm lẫn với phần mềm độc hại.

Cách sử dụng mạng cục bộ những người không có kết nối Internet – Cách tốt nhất bảo vệ chống lại virus. Đồng thời, cần kiểm soát chặt chẽ phương tiện truyền thông khác nhau thông tin từ chương trình ứng dụng có thể được sử dụng để truyền virus.

Mã hóa chống ồn. Thông tin dễ bị tổn thương nhất trong quá trình truyền tải. Kiểm soát truy cập loại bỏ nhiều mối đe dọa nhưng không thể thực hiện được khi sử dụng trong một kênh

kết nối đường dây không dây. Thông tin dễ bị tổn thương nhất chính xác là trong các lĩnh vực như vậy của ICS. Cung cấp CI đạt được bằng cách giảm âm lượng thông tin được truyền đi. Mức giảm này có thể đạt được thông qua mã hóa nguồn tối ưu.

Phương pháp nén động. Trong phương pháp này, cấu trúc thông điệp nén bao gồm từ điển và thông tin nén. Tuy nhiên, nếu có lỗi trong từ điển trong quá trình truyền hoặc lưu trữ thì sẽ xảy ra hiệu ứng lan truyền lỗi, dẫn đến bóp méo/hủy hoại thông tin.

Steganography. Bất cứ ai làm việc trong lĩnh vực mật mã đều quen thuộc với thuật ngữ này. Có ba lĩnh vực của kỹ thuật giấu tin: ẩn dữ liệu, hình mờ kỹ thuật số và tiêu đề. Với việc truyền tải thông tin ẩn, đồng thời đảm bảo tính bảo mật, vấn đề cung cấp dữ liệu số cũng được giải quyết. Bạn không thể thay đổi những gì bạn không thể nhìn thấy - lập luận chính cho việc sử dụng kỹ thuật giấu tin. Cô ấy nhược điểm chính- thể tích thùng chứa lớn hơn. Nhưng điều này có thể được giảm thiểu bằng cách chuyển nó dưới dạng vùng chứa thông tin hữu ích, không quan trọng đối với CI.

Sự đặt chỗđược sử dụng trong việc truyền tải và lưu trữ thông tin. Trong quá trình truyền, một tin nhắn có thể được lặp lại nhiều lần theo một hướng hoặc được gửi đi theo tất cả các hướng có thể. Cách tiếp cận này có thể coi là một trong những phương pháp của PCI. Khi lưu trữ, ý tưởng sao lưu khá đơn giản - tạo bản sao của các tệp đã nhận và lưu trữ chúng tách biệt với tài liệu gốc. Thông thường các cơ sở lưu trữ như vậy được tạo ra ở các vị trí phân tán về mặt địa lý.

Nhược điểm của việc đặt trước là khả năng rút tiền trái phép, bởi vì thông tin có sẵn trên thiết bị bên ngoài lưu trữ không được bảo vệ.

Phần kết luận. Bất kỳ thông tin nào hiển thị trên màn hình máy tính, trước khi xuất hiện ở đó, đều phải được mã hóa, bao gồm việc dịch thông tin sang ngôn ngữ máy. Đó là một chuỗi các xung điện – số không và số một. Có các bảng riêng biệt để mã hóa các ký tự khác nhau.

  • Andrianov, V.I. “Những thứ gián điệp” và các thiết bị bảo vệ đồ vật và thông tin: sách tham khảo. phụ cấp/V.I. Andrianov, V.A. Borodin, A.V. Sokolov. St.Petersburg: Lan, 1996. – 272 tr.
  • Baranov, A.P. Các vấn đề về đảm bảo an toàn thông tin trong các hệ thống thông tin, viễn thông chuyên dùng và cách giải quyết // Xã hội thông tin. - 1997. số 1. - Với. 13-17.
  • Số lượt xem của ấn phẩm: Vui lòng chờ

    Chúc một ngày tốt lành cho tất cả. Alexey Gulynin đang liên lạc. Trong bài viết trước chúng ta đã xem xét tạo bảng trong html. Trong bài viết này tôi muốn nói về một vấn đề mà bạn chắc chắn sẽ gặp phải (nếu bạn chưa gặp phải) trong quá trình luyện tập của mình. Và vấn đề này liên quan đến mã hóa trên trang web. Tình huống này thường xảy ra: bạn ngồi, nghĩ ra điều gì đó và cuối cùng suy nghĩ của bạn được thể hiện bằng mã viết. Bạn mở tác phẩm của mình trong trình duyệt và có toàn những điều vô nghĩa được viết ở đó, hoặc như người ta thường gọi điều này là vô nghĩa - “krakozyabry”. Một điều hiển nhiên ở đây là vấn đề với mã hóa trên trang web. Rất có thể mã hóa mặc định của bạn là windows-1251 (chữ Cyrillic) và trình duyệt đang cố mở tệp của bạn ở dạng mã hóa utf-8. Nói ngắn gọn về mã hóa là gì. Mã hóa là một loại bảng gán cho mỗi ký tự một ký tự nhất định mã máy. Theo đó, các chữ cái tiếng Nga của chúng tôi trong một bảng mã có một mã, ở các bảng mã khác - một mã khác. Các bạn, hãy sử dụng mã hóa utf-8 ở mọi nơi và bạn sẽ hài lòng. Utf-8 còn được gọi là Unicode.

    Hãy tạo một tài liệu thử nghiệm trong Notepad++ và viết đoạn mã sau.

    Sự cố mã hóa

    Kiểm tra vấn đề mã hóa

    Trong menu Notepad++, đảm bảo rằng "Mã hóa" ở trên cùng - "Mã hóa trong ANSI". Bây giờ chúng ta sẽ tạo ra một vấn đề về mã hóa một cách giả tạo. Hãy thử mở tệp này trong trình duyệt của bạn ngay bây giờ. Chúng ta sẽ thấy chữ tượng hình. Vấn đề ở đây là chúng tôi đã tạo tệp của mình ở dạng mã hóa ANSI (Cyrillic) và trình duyệt được thông báo rằng tệp của chúng tôi đang ở dạng mã hóa utf-8 ( ) .

    Những lý do tại sao vấn đề với mã hóa trên trang web:

    1) Giá trị không chính xác của thuộc tính bộ ký tự của thẻ meta.

    2) Trong menu Notepad++, kiểm tra xem mã hóa tệp có phải là utf-8 không. Việc này cần phải được thực hiện “Mã hóa” - “Mã hóa theo UTF-8 (không có BOM)”. Trên Internet, bạn có thể tìm thấy định nghĩa “BOM” là gì, nhưng không rõ ràng. Theo tôi hiểu, ở phần đầu của tài liệu có viết không gian không phá vỡ với chiều rộng bằng không. Chúng ta không cần nên luôn để "không có BOM".

    3) Đôi khi hai điểm đầu tiên đã được hoàn thành, nhưng những điều vô nghĩa vẫn xuất hiện trên các trang của trang web. Ở đây vấn đề có thể nằm ở cài đặt máy chủ, tức là. hosting trực tiếp chuyển tiêu đề cho các tệp của chúng tôi và đặt mã hóa mặc định. Chúng ta hãy cố gắng cai sữa cho anh ấy khỏi việc này. Cần có tệp .htaccess trong thư mục gốc của trang web. Sử dụng tệp này, bạn có thể điều chỉnh hoạt động lưu trữ. Nếu bạn không có tập tin này, thì bạn cần phải tạo nó. Thật thuận tiện để thực hiện việc này trong trình soạn thảo Notepad++. Trong tập tin này, bạn cần viết đoạn mã sau:

    AddDefaultCharset UTF-8

    Với hướng dẫn này, chúng tôi thông báo cho máy chủ rằng mã hóa mặc định của chúng tôi là "utf-8". Nếu điều này không giúp ích được gì thì bạn cần viết đoạn mã sau vào cùng một tệp:

    Charsetdisable trên AddDefaultCharset Tắt

    Ở đây chúng tôi đang cố gắng thông báo cho máy chủ rằng chúng tôi không muốn mã hóa mặc định. Nếu sau những âm mưu này không giúp được gì, thì bạn cần viết thư cho chủ nhà và quyết định vấn đề này với anh ấy. Có lẽ anh ấy sẽ nói với bạn điều gì đó.

    Ngày nay việc mã hóa ASCII là tiêu chuẩn để biểu diễn 128 ký tự đầu tiên (bao gồm số và dấu câu) của bảng chữ cái tiếng Anh, được trình bày theo một thứ tự cụ thể.

    Tuy nhiên, ngay cả 1 byte cũng cho phép bạn mã hóa giá trị gấp 2 lần, nghĩa là không phải 128 mà lên tới 256 những nghĩa khác nhau. Vì vậy, đủ nhanh để thay thế cơ bản ASCII các phiên bản mở rộng hơn của bảng mã nổi tiếng và vẫn còn phổ biến này bắt đầu xuất hiện, trong đó các ký tự của bảng chữ cái và theo đó, văn bản cũng được mã hóa ngôn ngữ khác nhau, bao gồm cả tiếng Nga.

    Phần mở rộng ASCII cho Nga

    Ngày nay, mã hóa là ưu tiên hàng đầu của người dùng Nga Windows1251 và mã hóa Unicode nữa UTF 8 bắt nguồn từ ASCII.

    Trên thực tế, ai đó có thể có một câu hỏi rất công bằng: "Tại sao lại cần những mã hóa văn bản này?"
    Điều cần nhớ là máy tính chỉ là một cỗ máy phải hoạt động đúng theo hướng dẫn. Để làm rõ những gì cần phải làm với mỗi ký hiệu được viết, nó được biểu diễn dưới dạng một tập hợp các dạng vectơ, mỗi bộ trong số đó được gửi đến đúng vị trí để ký hiệu này hoặc ký hiệu khác xuất hiện trên màn hình.

    Phông chữ chịu trách nhiệm hình thành các dạng vectơ và bản thân quá trình mã hóa phụ thuộc vào hệ điều hành cũng như các chương trình được sử dụng trong đó. Do đó, về bản chất, mỗi văn bản là một tập hợp byte nhất định, mỗi byte đại diện cho mã hóa của một ký tự viết. Và chương trình hiển thị thông tin được in trên màn hình (đây có thể là trình duyệt hoặc trình xử lý văn bản) phân tích mã, tìm màn hình phù hợp theo mã của nó trong bảng mã hóa, chuyển nó thành dạng vectơ cần thiết và hiển thị nó trong văn bản tài liệu.

    Mã hóa CP866 và KOI8-Rđã được sử dụng rộng rãi trước khi hệ điều hành đồ họa ra đời, hệ điều hành này đã trở nên phổ biến trên toàn thế giới - các cửa sổ. Bây giờ mã hóa phổ biến nhất hỗ trợ tiếng Nga là Windows1251.

    Tuy nhiên, đây không phải là trường hợp duy nhất, đó là lý do tại sao các nhà sản xuất phông chữ tiếng Nga được sử dụng định kỳ trong phần mềm vẫn gặp khó khăn liên quan đến việc hiển thị sai ký tự và sự xuất hiện của cái gọi là krakozyabry. Những chữ tượng hình khó xử này là kết quả của việc sử dụng không chính xác các bảng mã hóa, tức là các bảng khác nhau đã được sử dụng trong quá trình mã hóa và giải mã.

    Tình trạng tương tự cũng xảy ra trên các trang web, blog và các nguồn khác có thông tin bằng tiếng Nga và các ký tự nước ngoài khác ngoài tiếng Anh. Tình huống nàyđã xác định tiền đề cơ bản cho việc tạo ra một mã hóa phổ quát cho phép bạn mã hóa văn bản bằng bất kỳ ngôn ngữ nào, kể cả tiếng Trung, nơi có nhiều ký tự hơn đáng kể so với 256.

    Mã hóa phổ quát

    Phiên bản đầu tiên của mã hóa phổ quát được phát triển trong tập đoàn Unicode là mã hóa UTF 32. 32 bit được sử dụng để mã hóa từng ký tự. Giờ đây, khả năng mã hóa một số lượng lớn ký tự đã được hiện thực hóa, nhưng một vấn đề khác lại nảy sinh - hầu hết các nước Châu Âu đều có số lượng ký tự như vậy. ký tự phụ nó hoàn toàn không cần thiết. Rốt cuộc, tài liệu hóa ra rất nặng. Vì vậy, để thay thế UTF 32đã đến UTF 16, đã trở thành cơ sở cho tất cả các biểu tượng được sử dụng ở nước ta và hơn thế nữa.

    Nhưng vẫn có khá nhiều người không hài lòng. Ví dụ, những người chỉ giao tiếp bằng tiếng anh, kể từ khi chuyển từ ASCII sang UTF 16 tài liệu của họ vẫn tăng kích thước và đáng kể, gần gấp 2 lần.
    Kết quả là mã hóa có độ dài thay đổi UTF 8, điều này giúp không thể tăng trọng lượng của văn bản.

    Krakozyabry và phương pháp đối phó với chúng

    Nói chung, mã hóa được đặt trên trang nơi thông báo thông tin được tạo. Kết quả là, ở phần đầu của tài liệu, một loại dấu hiệu được hình thành để ghi nhớ nó, trực tiếp hoặc trực tiếp. thứ tự ngược lại mã ký tự được viết UTF16.

    Nếu một cái gì đó được in trong UTF-8, thì không có điểm đánh dấu ở đầu, vì không có khả năng viết mã ký tự theo thứ tự ngược lại trong bảng mã này.

    Vì vậy, bạn nên lưu mọi thứ đã gõ vào trình soạn thảo, không có dấu ( BOM) để giảm khả năng xuất hiện lỗi vô nghĩa trong tài liệu.

    Một lần nữa lời khuyên hữu íchđể chống lại krakozyabrs - viết vào tiêu đề mã của mỗi trang trên trang web thông tin về mã hóa văn bản chính xác để không có sự nhầm lẫn trên máy chủ cục bộ hoặc trên máy chủ.

    Ví dụ như thế này

    Trong hai năm qua, đã có một số tiến bộ đáng chú ý trong việc xây dựng các mã sửa lỗi. Người ta đã tìm thấy các phương pháp để xây dựng các mã rất dài và hiệu quả; và quan trọng nhất là những quy tắc này hóa ra lại phù hợp để triển khai thực tế. Đồng thời, nhu cầu về các kênh truyền thông ngày càng tăng cao. độ tin cậy cao, có thể được sử dụng trong các tổ hợp máy tính và các thiết bị tự động khác nhau. Khi nhu cầu về độ tin cậy cao hơn tăng lên, hiệu quả hoạt động của các thiết bị logic điện tử tăng lên và lý thuyết mã hóa ngày càng phát triển hơn, thời gian đang đến gần khi các thiết bị phát hiện và sửa lỗi, tức là các thiết bị thuộc loại được mô tả trong cuốn sách này, sẽ đóng vai trò ngày càng quan trọng. vai trò trong việc tạo ra các hệ thống thông tin phức tạp.

    Chương này giới thiệu khái niệm về kênh liên lạc, mô tả vai trò của mã trong việc truyền thông tin, định nghĩa mã khối và giới thiệu các khái niệm quan trọng khác.

    1.1. liên kết

    Sơ đồ hệ thống kỹ thuật số kết nối được hiển thị trong hình. 1.1. Mô hình tương tự cũng mô tả hệ thống lưu trữ thông tin, nếu môi trường lưu trữ thông tin được coi là một kênh. Một kênh truyền thông tin điển hình là kênh điện thoại. Thiết bị lưu trữ thông tin điển hình là máy ghi băng, bao gồm đầu ghi và đầu đọc.

    Cơm. 1.1. Sơ đồ khối hệ thống chung chuyển hoặc lưu trữ thông tin.

    Nguồn thông tin điển hình là một tin nhắn bao gồm các chữ số nhị phân hoặc thập phân hoặc văn bản được viết bằng bảng chữ cái. Bộ mã hóa chuyển đổi các tin nhắn này thành tín hiệu có thể được truyền đi

    theo kênh. Tín hiệu điển hình là tín hiệu điện với một số hạn chế về công suất, băng thông và thời lượng. Những tín hiệu này đi vào kênh và bị méo do nhiễu. Sau đó, tín hiệu bị biến dạng đi vào thiết bị giải mã, thiết bị này sẽ tái tạo lại tin nhắn đã gửi và chuyển tiếp đến người nhận. Nhiệm vụ của kỹ sư truyền thông chủ yếu là xây dựng bộ mã hóa và giải mã, mặc dù nó cũng có thể bao gồm nhiệm vụ cải thiện chính kênh đó. Lưu ý rằng bộ mã hóa bao gồm một thiết bị thực hiện thao tác thường được gọi là điều chế và bộ giải mã bao gồm một thiết bị thực hiện phát hiện.

    Hệ thống được hiển thị trong Hình. 1.1 quá chung chung để có thể sử dụng thuận tiện trong phân tích lý thuyết. Lý thuyết tổng quát mã hóa cho biết kênh liên lạc có dung lượng nhất định, các nguồn điển hình có tốc độ tạo thông tin nhất định và trong trường hợp tốc độ tạo thông tin của nguồn nhỏ hơn dung lượng kênh, có thể thực hiện mã hóa và giải mã sao cho xác suất giải mã sai là nhỏ tùy ý.

    Cơm. 1.2, Sơ đồ khối của một hệ thống truyền tải hoặc lưu trữ thông tin điển hình.

    Vì vậy, mặc dù vẫn còn hy vọng cho tương lai nhưng hiện tại lý thuyết này chỉ cung cấp những dấu hiệu mơ hồ về cách thiết kế một hệ thống truyền tải thông tin.

    Một hệ thống truyền tải thông tin hiện đại điển hình được thể hiện trong hình. 1.2. Hầu như tất cả các máy tính đều chuyển đổi thông tin đến thành dạng nhị phân và sau đó xử lý nó ở dạng nhị phân. Nhiều hệ thống sử dụng mã trong đó có nhiều

    sự kết hợp của sáu ký tự nhị phân biểu thị số, chữ cái, dấu cách và các ký tự đặc biệt như dấu chấm câu. Một mã phổ biến khác sử dụng bốn chữ số nhị phân cho mỗi chữ số thập phân và hai chữ số thập phân cho mỗi chữ cái hoặc chữ số thập phân. tính cách đặc biệt.

    Một thiết bị mã hóa các ký hiệu nhị phân thành tín hiệu ở đầu vào của kênh đôi khi được gọi là bộ điều biến. Trong hầu hết các trường hợp, nó liên kết số một với xung và số 0 với việc không có xung hoặc xung có thể phân biệt rõ ràng với mã cho một xung. Việc chuyển đổi riêng biệt từng ký tự nhị phân này là một hạn chế chắc chắn làm giảm thông lượng kênh. Bộ giải mã xác định xem xung nhận được tiếp theo là 0 hay 1. Giải mã các xung riêng lẻ dẫn đến giảm thông lượng hơn nữa. Lý thuyết cho thấy các phương pháp mã hóa và giải mã phức tạp hơn sẽ tăng tốc độ truyền dẫn với cùng xác suất lỗi. Tuy nhiên, người ta vẫn chưa biết cách hiệu quả việc thực hiện các phương pháp này.

    Các thiết bị mã hóa và giải mã ký tự nhị phân sử dụng mã nhị phân để phát hiện và sửa lỗi.

    Xin chào các độc giả thân mến của trang blog. Hôm nay chúng tôi sẽ nói chuyện với bạn về nguồn gốc của krakozyabrs trên một trang web và trong các chương trình, những mã hóa văn bản nào tồn tại và những mã nào nên được sử dụng. Chúng ta hãy xem xét kỹ hơn lịch sử phát triển của chúng, bắt đầu từ ASCII cơ bản, cũng như các phiên bản mở rộng CP866, KOI8-R, Windows 1251 và kết thúc bằng mã hóa Unicode Consortium hiện đại UTF 16 và 8.

    Đối với một số người, thông tin này có vẻ không cần thiết, nhưng bạn có biết tôi nhận được bao nhiêu câu hỏi cụ thể liên quan đến krakozyabrs đang thu thập dữ liệu (bộ ký tự không thể đọc được). Bây giờ tôi sẽ có cơ hội để mọi người tham khảo nội dung bài viết này và tự tìm ra những sai sót của mình. Chà, hãy sẵn sàng tiếp thu thông tin và cố gắng theo dõi diễn biến của câu chuyện.

    ASCII - mã hóa văn bản cơ bản cho bảng chữ cái Latinh

    Sự phát triển của mã hóa văn bản xảy ra đồng thời với sự hình thành của ngành CNTT và trong thời gian này, chúng đã trải qua khá nhiều thay đổi. Trong lịch sử, tất cả đều bắt đầu với EBCDIC, một ngôn ngữ khá khác biệt trong cách phát âm tiếng Nga, giúp mã hóa các chữ cái trong bảng chữ cái Latinh, chữ số Ả Rập và dấu chấm câu bằng các ký tự điều khiển.

    Tuy nhiên, điểm khởi đầu cho sự phát triển của mã hóa văn bản hiện đại nên được coi là phương pháp nổi tiếng. ASCII (Tiêu chuẩn Mỹ Mã trao đổi thông tin, trong tiếng Nga thường được phát âm là “aski”). Nó mô tả 128 ký tự đầu tiên được người dùng nói tiếng Anh sử dụng thường xuyên nhất - bức thư, chữ số Ả Rập và dấu chấm câu.

    128 ký tự được mô tả trong ASCII này cũng bao gồm một số ký tự dịch vụ như dấu ngoặc, dấu thăng, dấu hoa thị, v.v. Trên thực tế, bạn có thể tự mình nhìn thấy chúng:

    Chính 128 ký tự này từ phiên bản gốc của ASCII đã trở thành tiêu chuẩn và trong bất kỳ bảng mã nào khác, bạn chắc chắn sẽ tìm thấy chúng và chúng sẽ xuất hiện theo thứ tự này.

    Nhưng thực tế là với một byte thông tin, bạn có thể mã hóa không phải 128 mà có tới 256 giá trị khác nhau (hai lũy thừa 8 bằng 256), vì vậy hãy làm theo phiên bản cơ bản Askey xuất hiện toàn bộ dòng mã hóa ASCII mở rộng, trong đó, ngoài 128 ký tự cơ bản, còn có thể mã hóa các ký hiệu của bảng mã quốc gia (ví dụ: tiếng Nga).

    Ở đây, có lẽ cần phải nói thêm một chút về hệ thống số được sử dụng trong phần mô tả. Thứ nhất, như các bạn đã biết, máy tính chỉ làm việc với các số trong hệ nhị phân, cụ thể là số 0 và số 1 (“đại số Boolean”, nếu có ai học ở viện, trường). , mỗi số đó có lũy thừa hai, bắt đầu từ 0 và lên đến hai lũy thừa thứ bảy:

    Không khó hiểu khi tất cả các tổ hợp số 0 và số 1 có thể có trong cách xây dựng như vậy chỉ có thể là 256. Chuyển đổi một số từ hệ thống nhị phân sang số thập phân khá đơn giản. Bạn chỉ cần cộng tất cả lũy thừa của hai với lũy thừa ở trên chúng.

    Trong ví dụ của chúng ta, kết quả này là 1 (2 lũy thừa 0) cộng 8 (hai lũy thừa 3), cộng 32 (hai lũy thừa năm), cộng 64 (lũy thừa sáu), cộng 128 (đến lũy thừa thứ bảy). Tổng số là 233 theo ký hiệu thập phân. Như bạn có thể thấy, mọi thứ đều rất đơn giản.

    Nhưng nếu bạn nhìn kỹ hơn vào bảng với ký tự ASCII, bạn sẽ thấy chúng được trình bày dưới dạng mã hóa thập lục phân. Ví dụ: "dấu hoa thị" tương ứng với số thập lục phân 2A trong Aski. Chắc hẳn bạn đã biết rằng trong hệ thập lục phân, ngoài chữ số Ả Rập, các chữ cái Latinh từ A (có nghĩa là mười) đến F (có nghĩa là mười lăm) cũng được sử dụng.

    Vậy thì, đối với dịch Số nhị phân sang thập lục phân hãy sử dụng phương pháp đơn giản và rõ ràng sau đây. Mỗi byte thông tin được chia thành hai phần bốn bit, như thể hiện trong ảnh chụp màn hình ở trên. Cái đó. trong mỗi nửa byte mã nhị phân chỉ có mười sáu giá trị có thể được mã hóa (hai lũy thừa thứ tư), có thể dễ dàng được biểu diễn dưới dạng số thập lục phân.

    Hơn nữa, ở nửa bên trái của byte, độ sẽ cần được tính lại bắt đầu từ 0 chứ không phải như trong ảnh chụp màn hình. Kết quả là, thông qua các phép tính đơn giản, chúng ta có được số E9 được mã hóa trong ảnh chụp màn hình. Tôi hy vọng rằng quá trình lập luận của tôi và lời giải cho câu đố này đã rõ ràng với bạn. Chà, trên thực tế, bây giờ chúng ta hãy tiếp tục nói về mã hóa văn bản.

    Phiên bản mở rộng của mã hóa Asuka - CP866 và KOI8-R với đồ họa giả

    Vì vậy, chúng tôi bắt đầu nói về ASCII, vốn là điểm khởi đầu cho sự phát triển của tất cả các bảng mã hiện đại (Windows 1251, Unicode, UTF 8).

    Ban đầu, nó chỉ chứa 128 ký tự của bảng chữ cái Latinh, chữ số Ả Rập và một số ký tự khác, nhưng trong phiên bản mở rộng, nó có thể sử dụng tất cả 256 giá trị có thể được mã hóa trong một byte thông tin. Những thứ kia. Có thể thêm các ký hiệu chữ cái trong ngôn ngữ của bạn vào Aski.

    Ở đây chúng ta sẽ cần phải lạc đề một lần nữa để giải thích - tại sao chúng ta lại cần mã hóa? văn bản và tại sao nó lại quan trọng. Các ký tự trên màn hình máy tính của bạn được hình thành trên cơ sở hai thứ - tập hợp các dạng vectơ (biểu diễn) của các ký tự khác nhau (chúng nằm trong các tệp có ) và mã cho phép bạn lấy ra khỏi tập hợp các dạng vectơ này (tệp phông chữ ) chính xác là ký tự cần chèn vào Đúng vị trí.

    Rõ ràng là bản thân các phông chữ chịu trách nhiệm tạo ra các hình dạng vectơ, nhưng hệ điều hành và các chương trình được sử dụng trong đó chịu trách nhiệm mã hóa. Những thứ kia. bất kỳ văn bản nào trên máy tính của bạn sẽ là một tập hợp các byte, mỗi byte mã hóa một ký tự duy nhất của chính văn bản này.

    Chương trình hiển thị văn bản này trên màn hình (trình soạn thảo văn bản, trình duyệt, v.v.), khi phân tích mã, đọc mã hóa của ký tự tiếp theo và tìm dạng vectơ tương ứng trong tệp phông chữ được yêu cầu, được kết nối để hiển thị văn bản này dữ liệu văn bản. Mọi thứ đều đơn giản và tầm thường.

    Điều này có nghĩa là để mã hóa bất kỳ ký tự nào chúng ta cần (ví dụ: từ bảng chữ cái quốc gia), phải đáp ứng hai điều kiện - dạng vectơ của ký tự này phải ở phông chữ được sử dụng và ký tự này có thể được mã hóa ở dạng mở rộng. bảng mã ASCII trong một byte. Vì vậy, có rất nhiều lựa chọn như vậy. Chỉ để mã hóa các ký tự tiếng Nga, có một số loại Aska mở rộng.

    Ví dụ, ban đầu xuất hiện CP866, có khả năng sử dụng các ký tự từ bảng chữ cái tiếng Nga và là phiên bản mở rộng của ASCII.

    Những thứ kia. phần trên của nó hoàn toàn trùng khớp với phiên bản cơ bản của Aska (128 ký tự Latinh, số và những thứ vớ vẩn khác), được trình bày trong ảnh chụp màn hình ngay phía trên, nhưng phần dưới của bảng có mã hóa CP866 có giao diện như được chỉ ra trong ảnh chụp màn hình ngay bên dưới và cho phép bạn mã hóa 128 ký hiệu khác (các chữ cái tiếng Nga và tất cả các loại bút danh):

    Bạn thấy đấy, ở cột bên phải các số bắt đầu bằng 8, bởi vì... các số từ 0 đến 7 đề cập đến phần cơ bản của ASCII (xem ảnh chụp màn hình đầu tiên). Cái đó. Chữ "M" tiếng Nga trong CP866 sẽ có mã 9C (nằm ở giao điểm của hàng tương ứng với 9 và cột có số C trong hệ thập lục phân), có thể được viết bằng một byte thông tin và nếu có phông chữ phù hợp với các ký tự tiếng Nga, chữ cái này sẽ xuất hiện trong văn bản mà không gặp vấn đề gì.

    Số tiền này đến từ đâu? bút giả trong CP866? Vấn đề chung là cách mã hóa văn bản tiếng Nga này đã được phát triển từ những năm tháng tồi tàn khi hệ điều hành đồ họa chưa phổ biến như bây giờ. Và trong Dosa và các hệ điều hành văn bản tương tự, bút danh ít nhất có thể đa dạng hóa thiết kế văn bản bằng cách nào đó, và do đó CP866 và tất cả các hệ điều hành tương tự khác của nó thuộc danh mục phiên bản mở rộng của Asuka có rất nhiều trong đó.

    CP866 được IBM phân phối, nhưng ngoài ra, một số mã hóa đã được phát triển cho các ký tự tiếng Nga, ví dụ, cùng loại (ASCII mở rộng) có thể được quy cho KOI8-R:

    Nguyên lý hoạt động của nó vẫn giống như nguyên lý hoạt động của CP866 được mô tả trước đó một chút - mỗi ký tự văn bản được mã hóa bằng một byte đơn. Ảnh chụp màn hình hiển thị nửa sau của bảng KOI8-R, bởi vì nửa đầu hoàn toàn phù hợp với Asuka cơ bản, được hiển thị trong ảnh chụp màn hình đầu tiên trong bài viết này.

    Trong số các tính năng của mã hóa KOI8-R, có thể lưu ý rằng các chữ cái tiếng Nga trong bảng của nó không theo thứ tự bảng chữ cái, chẳng hạn như họ đã làm điều đó trong CP866.

    Nếu bạn nhìn vào ảnh chụp màn hình đầu tiên (của phần cơ bản, được bao gồm trong tất cả các bảng mã mở rộng), bạn sẽ nhận thấy rằng trong KOI8-R, các chữ cái tiếng Nga nằm trong cùng các ô của bảng với các chữ cái tương ứng của bảng chữ cái Latinh từ phần đầu tiên của bảng. Điều này được thực hiện để thuận tiện cho việc chuyển đổi từ các ký tự tiếng Nga sang tiếng Latinh bằng cách loại bỏ chỉ một bit (hai đến lũy thừa thứ bảy hoặc 128).

    Windows 1251 - phiên bản hiện đại của ASCII và lý do xuất hiện các vết nứt

    Sự phát triển hơn nữa của mã hóa văn bản là do các hệ điều hành đồ họa ngày càng phổ biến và nhu cầu sử dụng đồ họa giả trong chúng biến mất theo thời gian. Kết quả là, cả một nhóm phát sinh ra rằng về bản chất, vẫn là các phiên bản mở rộng của Asuka (một ký tự văn bản được mã hóa chỉ bằng một byte thông tin), nhưng không sử dụng các ký hiệu giả.

    Họ thuộc về cái gọi là Mã hóa ANSI, được phát triển bởi Viện Tiêu chuẩn Hoa Kỳ. Theo cách nói thông thường, tên Cyrillic cũng được sử dụng cho phiên bản có hỗ trợ tiếng Nga. Một ví dụ về điều này sẽ là.

    Nó khác biệt so với CP866 và KOI8-R được sử dụng trước đó ở chỗ vị trí của các ký hiệu giả trong đó được thay thế bằng các ký hiệu còn thiếu của kiểu chữ tiếng Nga (ngoại trừ dấu trọng âm), cũng như các ký hiệu được sử dụng trong tiếng Nga tương tự. ngôn ngữ Slav(tiếng Ukraina, tiếng Belarus, v.v.):

    Do có quá nhiều bảng mã ngôn ngữ tiếng Nga, các nhà sản xuất phông chữ và nhà sản xuất phần mềm liên tục phải đau đầu, và bạn và tôi, những độc giả thân mến, cũng thường xuyên mắc phải những vấn đề khét tiếng tương tự. krakozyabry khi có sự nhầm lẫn với phiên bản được sử dụng trong văn bản.

    Chúng thường xuất hiện khi gửi và nhận tin nhắn qua e-mail, điều này đòi hỏi phải tạo ra các bảng chuyển đổi rất phức tạp, trên thực tế, không thể giải quyết vấn đề này một cách cơ bản và người dùng thường sử dụng thư từ để tránh những mánh lới quảng cáo khét tiếng khi sử dụng. Các bảng mã tiếng Nga như CP866, KOI8-R hoặc Windows 1251.

    Trên thực tế, các krakozyabrs xuất hiện thay vì văn bản tiếng Nga là kết quả của việc sử dụng mã hóa không chính xác của ngôn ngữ này, không khớp với mã được mã hóa tin nhắn văn bản ban đầu.

    Ví dụ: nếu bạn cố gắng hiển thị các ký tự được mã hóa bằng CP866 bằng mã Bảng Windows 1251, thì những từ vô nghĩa tương tự (một bộ ký tự vô nghĩa) sẽ xuất hiện, thay thế hoàn toàn nội dung của tin nhắn.

    Một tình huống tương tự rất thường xảy ra trong các diễn đàn hoặc blog, khi văn bản có ký tự tiếng Nga bị lưu nhầm bằng mã hóa sai được sử dụng trên trang web theo mặc định hoặc trong trình soạn thảo văn bản sai, điều này làm tăng thêm các trò đùa vào mã mà người dùng không thể nhìn thấy. bằng mắt thường.

    Cuối cùng, nhiều người cảm thấy mệt mỏi với tình trạng này với rất nhiều mã hóa và liên tục phát sinh lỗi, các điều kiện tiên quyết xuất hiện để tạo ra một biến thể phổ quát mới có thể thay thế tất cả các biến thể hiện có và cuối cùng sẽ giải quyết được vấn đề với sự xuất hiện của văn bản có thể đọc được. Ngoài ra, còn có vấn đề với các ngôn ngữ như tiếng Trung, nơi có nhiều ký tự ngôn ngữ hơn 256.

    Unicode - bảng mã phổ quát UTF 8, 16 và 32

    Hàng ngàn ký tự thuộc nhóm ngôn ngữ Đông Nam Á này không thể được mô tả bằng một byte thông tin được phân bổ để mã hóa các ký tự trong các phiên bản mở rộng của ASCII. Kết quả là một tập đoàn đã được thành lập có tên là bảng mã Unicode(Unicode - Unicode Consortium) với sự hợp tác của nhiều nhà lãnh đạo ngành CNTT (những người sản xuất phần mềm, những người mã hóa phần cứng, những người tạo ra phông chữ), những người quan tâm đến sự xuất hiện của một loại mã hóa văn bản phổ quát.

    Biến thể đầu tiên được phát hành dưới sự bảo trợ của Hiệp hội Unicode là UTF 32. Số trong tên mã hóa có nghĩa là số bit được sử dụng để mã hóa một ký tự. 32 bit tương đương 4 byte thông tin sẽ cần thiết để mã hóa một ký tự đơn trong mã hóa UTF phổ quát mới.

    Kết quả là, cùng một tệp có văn bản được mã hóa ở phiên bản mở rộng của ASCII và UTF-32, trong trường hợp sau, sẽ có kích thước (nặng) lớn hơn bốn lần. Điều này thật tệ, nhưng bây giờ chúng ta có cơ hội mã hóa bằng YTF một số ký tự bằng hai lũy thừa ba mươi giây ( hàng tỷ ký tự, sẽ bao gồm mọi giá trị thực sự cần thiết với biên độ khổng lồ).

    Nhưng đối với nhiều quốc gia có ngôn ngữ thuộc nhóm châu Âu thì điều này số lượng lớn Không cần thiết phải sử dụng các ký tự trong mã hóa, tuy nhiên, khi sử dụng UTF-32, chúng sẽ không bao giờ nhận được trọng lượng của tài liệu văn bản tăng gấp bốn lần và kết quả là, khối lượng lưu lượng truy cập Internet tăng lên và khối lượng dữ liệu được lưu trữ. Đây là rất nhiều, và không ai có thể đủ khả năng lãng phí như vậy.

    Nhờ sự phát triển của Unicode, UTF-16, hóa ra lại thành công đến mức nó được mặc định sử dụng làm khoảng trống cơ sở cho tất cả các ký tự mà chúng tôi sử dụng. Nó sử dụng hai byte để mã hóa một ký tự. Hãy xem thứ này trông như thế nào.

    Trong hệ điều hành Windows, bạn có thể đi theo đường dẫn “Bắt đầu” - “Chương trình” - “Phụ kiện” - “Công cụ hệ thống” - “Bảng ký tự”. Kết quả là một bảng sẽ mở ra với các hình dạng vector của tất cả các phông chữ được cài đặt trên hệ thống của bạn. Nếu bạn chọn trong " Tùy chọn bổ sung» bộ ký tự Unicode, bạn có thể xem riêng từng phông chữ toàn bộ phạm vi ký tự có trong đó.

    Nhân tiện, bằng cách nhấp vào bất kỳ cái nào trong số chúng, bạn có thể thấy hai byte của nó mã ở định dạng UTF-16, bao gồm bốn chữ số thập lục phân:

    Có bao nhiêu ký tự có thể được mã hóa bằng UTF-16 bằng 16 bit? 65.536 (hai lũy thừa mười sáu) và đây là con số được sử dụng làm không gian cơ sở trong Unicode. Ngoài ra, có nhiều cách để mã hóa khoảng hai triệu ký tự bằng cách sử dụng nó, nhưng chúng bị giới hạn trong không gian mở rộng gồm một triệu ký tự văn bản.

    Nhưng ngay cả phiên bản mã hóa Unicode thành công này cũng không mang lại nhiều sự hài lòng cho những người viết chương trình chỉ bằng tiếng Anh, bởi vì đối với họ, sau khi chuyển đổi từ phiên bản mở rộng của ASCII sang UTF-16, trọng lượng của tài liệu đã tăng gấp đôi ( một byte cho mỗi ký tự trong Aski và hai byte cho cùng một ký tự trong YUTF-16).

    Chính xác là để làm hài lòng tất cả mọi người và mọi thứ trong tập đoàn Unicode mà người ta đã quyết định nghĩ ra mã hóa có độ dài thay đổi. Nó được gọi là UTF-8. Mặc dù có tên là tám, nhưng nó thực sự có độ dài thay đổi, tức là Mỗi ký tự của văn bản có thể được mã hóa thành một chuỗi có độ dài từ một đến sáu byte.

    Trong thực tế, UTF-8 chỉ sử dụng phạm vi từ một đến bốn byte, bởi vì ngoài bốn byte mã, về mặt lý thuyết, thậm chí không thể tưởng tượng được bất cứ điều gì. Tất cả các ký tự Latinh trong đó được mã hóa thành một byte, giống như trong ASCII cũ.

    Điều đáng chú ý là trong trường hợp chỉ mã hóa bảng chữ cái Latinh, ngay cả những chương trình không hiểu Unicode vẫn sẽ đọc những gì được mã hóa bằng YTF-8. Những thứ kia. phần cốt lõi của Asuka chỉ đơn giản được chuyển sang việc thành lập tập đoàn Unicode này.

    Các ký tự Cyrillic trong UTF-8 được mã hóa thành hai byte và ví dụ: các ký tự Georgia được mã hóa thành ba byte. Hiệp hội Unicode, sau khi tạo UTF 16 và 8, đã giải quyết được vấn đề chính - bây giờ chúng ta có phông chữ có một không gian mã duy nhất. Và bây giờ các nhà sản xuất của họ chỉ có thể lấp đầy nó bằng các dạng ký tự văn bản vector dựa trên điểm mạnh và khả năng của chúng. Bây giờ họ thậm chí còn đi theo bộ.

    Trong “Bảng ký tự” ở trên, bạn có thể thấy rằng các phông chữ khác nhau hỗ trợ số lượng ký tự khác nhau. Một số phông chữ giàu Unicode có thể khá nặng. Nhưng bây giờ chúng khác nhau không phải ở chỗ chúng được tạo ra cho các bảng mã khác nhau, mà ở chỗ nhà sản xuất phông chữ đã lấp đầy hoặc không lấp đầy hoàn toàn không gian mã đơn bằng các dạng vectơ nhất định.

    Những từ điên rồ thay vì chữ Nga - cách khắc phục

    Bây giờ chúng ta hãy xem cách krakozyabrs xuất hiện thay vì văn bản hay nói cách khác là cách chọn mã hóa chính xác cho văn bản tiếng Nga. Trên thực tế, nó được đặt trong chương trình mà bạn tạo hoặc chỉnh sửa chính văn bản hoặc mã này bằng cách sử dụng các đoạn văn bản.

    Để chỉnh sửa và tạo tập tin văn bản Cá nhân tôi sử dụng một cái rất tốt, theo ý kiến ​​​​của tôi, . Tuy nhiên, nó có thể làm nổi bật cú pháp của hàng trăm ngôn ngữ lập trình và đánh dấu khác, đồng thời có khả năng mở rộng bằng cách sử dụng các plugin. Đọc đánh giá chi tiết chương trình tuyệt vời này tại liên kết được cung cấp.

    TRONG thực đơn trên cùng Notepad++ có mục “Mã hóa”, nơi bạn sẽ có cơ hội chuyển đổi tùy chọn hiện có thành tùy chọn được sử dụng theo mặc định trên trang web của mình:

    Trong trường hợp trang web trên Joomla 1.5 trở lên, cũng như trong trường hợp blog trên WordPress, bạn nên chọn tùy chọn để tránh xuất hiện các vết nứt UTF 8 không có BOM. Tiền tố BOM là gì?

    Thực tế là khi họ đang phát triển mã hóa YUTF-16, vì lý do nào đó, họ đã quyết định gắn vào nó một thứ như khả năng viết mã ký tự theo cả chuỗi trực tiếp (ví dụ: 0A15) và ngược lại (150A) . Và để các chương trình hiểu chính xác trình tự đọc mã, người ta đã phát minh ra BOM(Dấu thứ tự byte hay nói cách khác là chữ ký), được thể hiện bằng việc thêm ba byte bổ sung vào phần đầu của tài liệu.

    Trong mã hóa UTF-8, không có BOM nào được cung cấp trong tập đoàn Unicode và do đó việc thêm chữ ký (ba byte bổ sung khét tiếng ở đầu tài liệu) chỉ đơn giản là ngăn một số chương trình đọc mã. Vì vậy, khi lưu file dưới dạng UTF, chúng ta phải luôn chọn tùy chọn không có BOM (không có chữ ký). Vậy là bạn đã biết trước bảo vệ bạn khỏi bò krakozyabrs.

    Điều đáng chú ý là một số chương trình trong Windows không thể thực hiện được điều này (chúng không thể lưu văn bản ở dạng UTF-8 mà không có BOM), chẳng hạn như Windows Notepad khét tiếng. Nó lưu tài liệu ở dạng UTF-8, nhưng vẫn thêm chữ ký (ba byte bổ sung) vào đầu tài liệu. Hơn nữa, các byte này sẽ luôn giống nhau - đọc mã theo trình tự trực tiếp. Nhưng trên các máy chủ, vì điều nhỏ nhặt này, một vấn đề có thể nảy sinh - kẻ gian sẽ lộ diện.

    Vì vậy, trong mọi trường hợp Đừng sử dụng notepad Windows thông thườngđể chỉnh sửa tài liệu trên trang web của bạn nếu bạn không muốn bất kỳ vết nứt nào xuất hiện. Tôi coi trình soạn thảo Notepad++ đã được đề cập là tùy chọn tốt nhất và đơn giản nhất, thực tế không có nhược điểm và chỉ bao gồm các ưu điểm.

    Trong Notepad++, khi bạn chọn một kiểu mã hóa, bạn sẽ có tùy chọn chuyển đổi văn bản sang mã hóa UCS-2, về bản chất rất gần với tiêu chuẩn Unicode. Ngoài ra, Notepad còn có thể mã hóa văn bản ở định dạng ANSI, tức là liên quan đến tiếng Nga, đây sẽ là Windows 1251, mà chúng tôi đã mô tả ở trên. Thông tin này đến từ đâu?

    Nó được đăng ký trong sổ đăng ký phòng phẫu thuật của bạn Hệ thống Windows- nên chọn mã hóa nào trong trường hợp ANSI, nên chọn mã hóa nào trong trường hợp OEM (đối với tiếng Nga sẽ là CP866). Nếu bạn cài đặt một ngôn ngữ mặc định khác trên máy tính của mình thì các bảng mã này sẽ được thay thế bằng các ngôn ngữ tương tự từ danh mục ANSI hoặc OEM cho cùng ngôn ngữ đó.

    Sau khi lưu tài liệu trong Notepad++ ở dạng mã hóa bạn cần hoặc mở tài liệu từ trang web để chỉnh sửa, bạn có thể thấy tên của nó ở góc dưới bên phải của trình chỉnh sửa:

    Để tránh bị tắc nghẽn, ngoài các hành động được mô tả ở trên, sẽ rất hữu ích khi viết vào tiêu đề của nó mã nguồn tất cả các trang của trang web đều có thông tin về chính mã hóa này để không gây nhầm lẫn trên máy chủ hoặc máy chủ cục bộ.

    Nói chung, trong tất cả các ngôn ngữ đánh dấu siêu văn bản Ngoài Html, một khai báo xml đặc biệt được sử dụng để biểu thị mã hóa văn bản.

    Trước khi phân tích mã, trình duyệt sẽ biết phiên bản nào đang được sử dụng và cách nó cần diễn giải mã ký tự của ngôn ngữ đó một cách chính xác như thế nào. Nhưng điều đáng chú ý là nếu bạn lưu tài liệu ở dạng Unicode mặc định thì có thể bỏ qua khai báo xml này (mã hóa sẽ được coi là UTF-8 nếu không có BOM hoặc UTF-16 nếu có BOM).

    Trong trường hợp một tài liệu ngôn ngữ HTMLđược sử dụng để chỉ mã hóa Phần tử meta, được viết giữa thẻ Head mở và đóng:

    ... ...

    Mục này khá khác so với mục được áp dụng, nhưng hoàn toàn tuân thủ tiêu chuẩn Html 5 mới đang dần được giới thiệu và nó sẽ được mọi trình duyệt hiện đang sử dụng hiểu hoàn toàn chính xác.

    Về lý thuyết, một phần tử Meta có dấu hiệu Mã hóa HTML sẽ tốt hơn nếu đặt tài liệu càng cao càng tốt trong tiêu đề tài liệuđể tại thời điểm gặp ký tự đầu tiên trong văn bản không phải từ ANSI cơ bản (luôn được đọc chính xác và ở bất kỳ biến thể nào), trình duyệt phải có sẵn thông tin về cách diễn giải mã của các ký tự này.

    Chúc bạn may mắn! Hẹn gặp lại bạn sớm trên các trang của trang blog

    Bạn có thể xem thêm video bằng cách vào
    ");">

    Bạn có thể quan tâm

    Địa chỉ URL là gì, sự khác biệt giữa địa chỉ tuyệt đối và địa chỉ là gì? liên kết tương đối cho trang web
    OpenServer - một máy chủ cục bộ hiện đại và một ví dụ về việc sử dụng nó cho Cài đặt WordPress trên may tinh
    Chmod là gì, cấp quyền gì cho file và thư mục (777, 755, 666) và cách thực hiện thông qua PHP
    Tìm kiếm Yandex theo trang web và cửa hàng trực tuyến