Какое отношение Unicode / ASCII имеет к машинному коду?

#unicode

#unicode

Вопрос:

Несмотря на то, что машинный язык варьируется в зависимости от, ну, машины, насколько я выяснил, Unicode / ASCII имеет определенные значения для символов (вся эта концепция все еще немного сбивает с толку). Итак, в принципе, двоичное значение символа, скажем, ‘A’ в Linux отличается от значения ‘A’ в Windows? Если разные машины понимают разные последовательности единиц и 0, не должны ли 1 и 0 ‘A отличаться в зависимости от машины (даже если в Unicode установлены значения для каждого символа — я думаю)? PS Я новичок в программировании и даже не знаю, подходящее ли это место, чтобы спросить об этомвопрос.(Если это не так, извините!)

Комментарии:

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

2. Из комментариев и ответов вы должны понять, что «‘A’ в Linux» не совсем имеет смысл. Итог, если кто-то выдает последовательность байтов и говорит, что они представляют текст, он также должен убедиться, что вы знаете, в какой кодировке и с каким набором символов они были созданы. Это может быть из спецификаций, соглашений, встроенной документации ( мета -кодировка в HTML, кодировка в XML или заголовок типа содержимого в HTTP.)

Ответ №1:

Linux и Windows — это разные операционные системы, которые могут очень хорошо работать на одном компьютере (аппаратном обеспечении). ASCII и Unicode (и кодировки Unicode, такие как UTF-8) являются стандартами, независимыми от какой-либо конкретной операционной системы или компьютера. Эти стандарты определяют, как должны быть выражены данные, и это не зависит от какой-либо конкретной реализации этого стандарта. ASCII в Windows точно такой же, как ASCII в Linux, потому что ASCII был определен таким, какой он есть, и разные системы должны привести свою реализацию в соответствие с этим стандартом, если они хотят быть совместимыми.

Теперь разные аппаратные архитектуры могут использовать архитектуры с большим и маленьким порядком, и в этом случае фактические байты могут обрабатываться в другом порядке внутри. Но это всего лишь деталь реализации; ASCII все равно будет ASCII.

Комментарии:

1. Да, ASCII по-прежнему будет ASCII, за исключением случаев, когда люди используют ASCII, такие как Kleenex . Остерегайтесь людей, злоупотребляющих этим именем для общих понятий. Сам ASCII используется только в очень специализированных контекстах.

2. Спасибо за ответы (: Итак, схема кодирования не связана с машинным языком? И одинакова ли последовательность битов указанных символов в ASCII на всех машинах (которые используют ASCII)? Например, поскольку 01000001 — это «A», все ли компьютеры, использующие ASCII, понимают эту последовательность как «A»? Я не уверен, что понимаю смысл этого вопроса; Я думаю, что у меня перепуталась концепция схем кодирования и машинного языка.

3. Вы почти на месте. Будет ли последовательность байтов обрабатываться как текст, зависит от программы или операционной системы, а не от машины. Программа, подобная веб-браузеру, загружающая веб-страницу, использует кодировку, которую сервер говорит использовать. Операционная система Windows использует UTF-16 для имен в своей файловой системе NTFS. Компилятор или ассемблер использует либо кодировку по умолчанию, которую вы должны знать, и / или позволяет указать ему, в какой кодировке вы сохранили файл исходного кода. Консольная программа (она же оболочка, терминал, командная строка) имеет настройку кодировки. Перейдите locale или chcp , чтобы увидеть это.

Ответ №2:

Машины не «понимают» символы. Они обрабатывают байты, состоящие из 0 и 1.