Как компьютер отображает символ на экране с правильной кодировкой? - PullRequest
0 голосов
/ 07 июня 2018

Меня интересует кодировка символа в компьютере.

Когда я открываю свой xxx.c с помощью visual studio code, как код VS обнаруживает кодировку моего файла и интерпретирует их "01 "последовательность.Далее, как код Visual Studio (или даже компьютерная система) отображает символ на экране в соответствии с моим файлом последовательности "01" и кодировкой символов?

Спасибо!

Iтакже использует китайский во время моих проектов.Иногда, кодировка файла действительно сводит меня с ума.Иногда мой правильный utf-8 файл, созданный, например, путем редактирования A, был уничтожен некоторым текстовым редактором B, который интерпретирует его как GBK файл, и редактирование A никогда не сможет вернуть его обратно правильным.

Я много искал, но большинство ответов кажется слишком абстрактным или неуместным.Я хочу выяснить, как программное обеспечение и компьютерная система (или операционная система) взаимодействуют друг с другом, чтобы сделать эту простую, но важную работу!

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Перво-наперво, «никогда не вернуть его»: Всегда использовать контроль исходного кода

"Как программное обеспечение и компьютерная система (или операционная система)) сотрудничать, чтобы сделать эту простую, но важную работу! ": Они не в этом проблема!

Краткая история: Много десятилетий назад люди использовали маленький характернаборы.Идея заключалась в том, что система всегда будет использовать одну и ту же.Просто.Каждый раз, когда текстовый файл передавался между системами, он немедленно переводился в локальную кодировку символов.Затем произошла глобализация обмена файлами и систем, необходимых для хранения текстовых файлов в разных кодировках.Не было никакого общего способа записать, что такое кодировка.В 1991 году вышел огромный набор символов Unicode.Языки (VB4, Java), API-интерфейсы операционных систем (Win32), файловые системы (NTFS),… начали его применять.Тем не менее, его кодировки (UTF-8, UTF-16) представляют собой еще больше возможностей, для которых используется кодировка текстового файла.Многие программы, которые читают текстовые файлы, используют либо старую систему кодировки системы по умолчанию, либо догадываются («обнаруживают»).

В мире программирования некоторые языки требуют, чтобы исходные файлы использовали определенную кодировку (скажем, UTF-8);В других инструментах по умолчанию используется определенная кодировка (скажем, UTF-8).В большинстве случаев набор инструментов, предоставляемый реализацией C или C ++, будет иметь согласованный набор правил.Если вы также используете IDE или другую форму системы проекта, вы можете установить кодировку для всего проекта и, в некоторых случаях, для отдельных файлов.

Таким образом, единственным решением является использование только инструментов, которые работают для вас иправильно их настроить. Если это больно, прекратите это делать.


В сторону: В отношении программирования и кодировки символов по умолчанию будьте осторожны, чтобы не быть обманутыми при использовании системы различными языковыми библиотеками.кодировка символов по умолчанию - если только это не то, что нужно.В противном случае вы предоставляете своим пользователям ту же проблему, с которой сталкиваетесь.(В Java просто избегайте этого с явными аргументами. В библиотеках C и C ++ кодировка объединяется в Locales. Но обратите внимание, что многие системы инициализируют программу для использования кодировки символов по умолчанию.

0 голосов
/ 07 июня 2018

Как вы хорошо знаете, компьютер не может хранить "буквы", "цифры", "картинки" или что-либо еще.Единственное, что он может хранить и работать - это бит .Бит может иметь только два значения: yes или no, true или false, 1 или 0 или любое другое значение, которое вы хотите назвать этими двумя значениями.

Поскольку компьютер работает с электричеством, «реальный» бит - это вспышка электричества, которое либо есть, либо его нет.Для людей это обычно представляется с использованием 1 и 0.

Чтобы использовать биты для представления чего-либо вообще, кроме битов, нам нужны правила.Нам нужно преобразовать последовательность битов в нечто вроде букв, цифр и изображений, используя схему кодирования или короткое кодирование.

01100010 (b) 01101001 (i) 01110100 (t) 01110011 (с))

В таблице ASCII указано 95 читаемых человеком символов, включая буквы от A до Z как в верхнем, так и в нижнем регистре, цифры 0до 9, несколько знаков препинания и символов, таких как символ доллара, амперсанд и некоторые другие.Он также включает значения 33 для таких вещей, как пробел, перевод строки, табуляция, возврат и т. Д.Они не могут быть напечатаны сами по себе, но все же видимы в некоторой форме и полезны для людей напрямую.

Чтобы кодировать что-либо в ASCII, следуйте таблице справа налево, заменяя буквы битами.Чтобы декодировать строку битов в читаемые человеком символы, следуйте таблице слева направо, заменяя буквы битами.

Не все варианты букв и загогулинов используются во всех европейскихязыки могут быть представлены в одной таблице с максимум 256 значениями.Итак, чем закончился мир, так это множеством схем кодирования, стандартов, стандартов де-факто и полстандартов, которые охватывают различное подмножество символов.Кто-то должен был написать документ об итальянском на китайском языке, как вы, и обнаружил, что ни одна кодировка не охватывает оба языка, а придумана.Или я представляю, что это происходило бесчисленное количество раз.

Как правильно обрабатывать кодировки?

Знать, что кодирует определенный фрагмент текста, то есть определенную последовательность байтов, затем интерпретируйте его с помощью этой кодировки.Это все, что вам нужно сделать.Если вы пишете приложение, которое позволяет пользователю вводить текст, укажите, какую кодировку вы принимаете от пользователя.Для любого вида текстового поля программист обычно может выбрать его кодировку.Для любого вида файла, который пользователь может загрузить или импортировать в программу, должна быть спецификация, в которой должна быть кодировка этого файла. В качестве альтернативы, пользователю нужен какой-то способ сообщить программе, в какой кодировке находится файл. Эта информация можетбыть частью самого формата файла, или это может быть выбор, который пользователь сделал (не то, что большинство пользователей обычно знали бы, если бы они не читали эту статью).

UTF-8 И ASCII

Гениальная особенность UTF-8 заключается в том, что он двоично совместим с ASCII, который является де-факто базовой линией для всех кодировок.Все символы, доступные в кодировке ASCII, занимают только один байт в UTF-8, и это те же байты, которые используются в ASCII.Другими словами, ASCII отображает 1: 1 в UTF-8.Любой символ, отсутствующий в ASCII, занимает два или более байтов в UTF-8.Для большинства языков программирования, которые ожидают синтаксического анализа ASCII, это означает, что вы можете включать текст UTF-8 непосредственно в свои программы:

$ string = "漢字";

Что нужно знать каждому программисту абсолютно положительно о кодировках и наборах символов для работы с текстом )

, если вы хотите, чтобы это была ссылка ... это очень интересно ...

Это полезно?Я надеюсь на это !!

удачи

Посмотрите на эти файлы, вот как работает шифратор или расшифровщик ... This Is example of encrypt and decrypt

код здесь

// decoder
set x = WScript.CreateObject("WScript.Shell")
mySecret = inputbox(" decrypt text")
'Reverse the submitted text'
mySecret = StrReverse(mySecret)
'open up an istance of notepad to print'
x.Run "%windir%\Notepad"
wscript.sleep 1000
...