Отметить все правильные операторы в текстовых файлах, сохраняются только коды символов

Обновлено: 21.11.2024

В этой главе объясняется, как выбрать набор символов. Он включает следующие темы:

Кодировка набора символов

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

Этот раздел включает следующие темы:

Что такое кодированный набор символов?

При создании базы данных вы указываете набор закодированных символов. Выбор набора символов определяет, какие языки могут быть представлены в базе данных. Это также влияет на:

Как вы создаете схему базы данных

Как вы разрабатываете приложения, обрабатывающие символьные данные

Как база данных работает с операционной системой

Для хранения данных символов требуется место для хранения

Группа символов (например, буквы алфавита, иероглифы, символы, знаки препинания и управляющие символы) может быть закодирована как набор символов. Закодированный набор символов назначает уникальные числовые коды каждому символу в репертуаре символов. Числовые коды называются кодовыми точками или закодированными значениями. В Табл. 2-1 показаны примеры символов, которым присвоено шестнадцатеричное кодовое значение в наборе символов ASCII.

Таблица 2-1 Символы, закодированные в наборе символов ASCII

Компьютерная индустрия использует множество кодированных наборов символов. Наборы символов различаются следующим образом:

Количество доступных символов

Доступные персонажи (репертуар персонажей)

Письма, используемые для письма, и языки, которые они представляют

Кодовые значения, присвоенные каждому символу

Схема кодирования, используемая для представления символа

Oracle поддерживает большинство национальных, международных и специфичных для поставщиков стандартов кодирования наборов символов.

"Наборы символов" для полного списка наборов символов, поддерживаемых Oracle

Какие символы закодированы?

Символы, закодированные в наборе символов, зависят от представленных систем письма. Система письма может использоваться для представления языка или группы языков. Системы письма можно разделить на две категории:

Этот раздел также включает следующие темы:

Системы фонетического письма

Системы фонетического письма состоят из символов, обозначающих различные звуки, связанные с языком. Греческий, латинский, кириллица и деванагари — все это примеры фонетических систем письма, основанных на алфавитах. Обратите внимание, что алфавиты могут представлять более одного языка. Например, латинский алфавит может представлять многие западноевропейские языки, такие как французский, немецкий и английский.

Символы, связанные с фонетической системой письма, обычно могут быть закодированы одним байтом, поскольку репертуар символов обычно меньше 256 символов.

Идеографические системы письма

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

Символы, связанные с идеографической системой письма, обычно кодируются более чем одним байтом, поскольку репертуар символов насчитывает десятки тысяч символов.

Пунктуация, управляющие знаки, цифры и символы

Помимо кодирования алфавита языка необходимо кодировать и другие специальные символы:

Знаки препинания, такие как запятые, точки и апострофы

Специальные символы, такие как символы валюты и математические операторы

Управляющие символы, такие как возврат каретки и табуляция

Направление написания

Большинство западных языков пишут слева направо сверху вниз страницы. Языки Восточной Азии обычно пишутся сверху вниз справа налево на странице, хотя для технических книг, переведенных с западных языков, часто делаются исключения. На арабском и иврите пишут справа налево сверху вниз.

Цифры в обратном направлении на арабском языке и иврите. Хотя текст пишется справа налево, числа в предложении пишутся слева направо. Например, «Я написал 32 книги» будет записано как «skoob 32 etorw I». Независимо от направления записи Oracle хранит данные в логическом порядке.Логический порядок означает порядок, в котором кто-то печатает язык, а не то, как он выглядит на экране.

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

Какие символы поддерживает набор символов?

Разные наборы символов поддерживают разные репертуары символов. Поскольку наборы символов обычно основаны на определенном сценарии письма, они могут поддерживать более одного языка. Когда наборы символов были впервые разработаны, у них был ограниченный набор символов. Даже сейчас могут быть проблемы с использованием определенных персонажей на разных платформах. Следующие символы CHAR и VARCHAR представлены во всех наборах символов базы данных Oracle и могут переноситься на любую платформу:

Прописные и строчные буквы английского алфавита от A до Z и от a до z

Арабские цифры от 0 до 9

Следующие управляющие символы: пробел, горизонтальная табуляция, вертикальная табуляция, перевод страницы

Если вы используете символы вне этого набора, позаботьтесь о том, чтобы ваши данные поддерживались в выбранном вами наборе символов базы данных.

Правильная установка параметра NLS_LANG необходима для правильного преобразования данных. Набор символов, заданный параметром NLS_LANG, должен отражать настройку операционной системы клиента. Правильная установка NLS_LANG обеспечивает правильное преобразование из кодировки символов клиентской операционной системы в набор символов базы данных. Если эти настройки совпадают, Oracle предполагает, что отправляемые или получаемые данные закодированы в том же наборе символов, что и набор символов базы данных, поэтому проверка или преобразование набора символов могут не выполняться. Это может привести к повреждению данных, если потребуется преобразование.

Во время преобразования из одного набора символов в другой Oracle ожидает, что данные на стороне клиента будут закодированы в наборе символов, заданном параметром NLS_LANG. Если вы поместите в строку другие значения (например, с помощью функций CHR или CONVERT SQL), то значения могут быть повреждены при отправке в базу данных, поскольку они не преобразованы должным образом. Если вы правильно сконфигурировали среду и если набор символов базы данных поддерживает весь репертуар символьных данных, которые могут быть введены в базу данных, вам не нужно изменять текущий набор символов базы данных. Однако, если ваше предприятие становится более глобальным и вам необходимо поддерживать дополнительные символы или новые языки, вам может потребоваться выбрать набор символов с более широким репертуаром символов. Корпорация Oracle рекомендует в таких случаях использовать базы данных и типы данных Unicode.

Справочник Oracle Database SQL для получения дополнительной информации о функциях CHR и CONVERT SQL

Кодировка ASCII

Таблица 2-2 показывает, как кодируется символ ASCII. Заголовки строк и столбцов обозначают шестнадцатеричные цифры. Чтобы найти закодированное значение символа, прочитайте номер столбца, за которым следует номер строки. Например, кодовое значение символа A равно 0x41.

Целевая аудитория: авторы контента, пользователи и все, кто не знает, что такое кодировка символов, и хочет получить краткую информацию о том, как она на них влияет.

Вопрос

Что такое кодировка символов и зачем мне это?

Ответить

Во-первых, какое мне дело?

Если вы используете какой-либо другой текст, кроме самого простого английского текста, люди могут не прочитать созданный вами контент, пока вы не скажете, какую кодировку символов вы использовали.

Например, вы можете сделать так, чтобы текст выглядел так:

но на самом деле это может выглядеть так:

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

Так что же такое кодировка символов?

Слова и предложения в тексте создаются из файлов . Примеры символов включают латинскую букву á, китайскую иероглифику 請 или иероглиф деванагари ह .

Возможно, вы не сможете увидеть некоторые символы на этой странице, потому что у вас нет необходимых шрифтов. Если вы нажмете на то место, где вы ожидали увидеть символ, вы перейдете к графической версии. Эта страница закодирована в UTF-8.

Символы, необходимые для определенной цели, группируются в (также называемые ). (Для однозначного обращения к символам каждый символ связан с числом, называемым .)

Символы хранятся в компьютере как один или несколько .

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

Этот вводящий в заблуждение термин часто используется для обозначения того, что на самом деле является кодировкой символов.Вы должны знать об этом использовании, но по возможности придерживайтесь термина кодировки символов.

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

К сожалению, существует множество различных наборов символов и кодировок, т.е. множество различных способов отображения между байтами, кодовыми точками и символами. В разделе «Дополнительная информация» для тех, кто интересуется, немного больше подробностей.

Однако в большинстве случаев вам не нужно знать подробности. Вам просто нужно быть уверенным, что вы прислушаетесь к советам в разделе Как это на меня повлияет? ниже.

Как в это вписываются шрифты?

A — это набор определений глифов, т.е. определения фигур, используемых для отображения символов.

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

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

Как это влияет на меня?

В настоящее время как автор или разработчик контента вы всегда должны выбирать кодировку символов UTF-8 для своего контента или данных. Эта кодировка Unicode является хорошим выбором, потому что вы можете использовать кодировку одного символа для обработки любого символа, который вам может понадобиться. Это сильно упрощает дело. Использование Unicode во всей вашей системе также избавляет от необходимости отслеживать и преобразовывать различные кодировки символов.

Авторам контента необходимо выяснить, как объявить кодировку символов, используемую для формата документа, с которым они работают.

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

Разработчикам необходимо убедиться, что различные части системы могут взаимодействовать друг с другом, понимать, какие кодировки символов используются, и поддерживать все необходимые кодировки и символы. (В идеале вы должны использовать кодировку UTF-8 везде и избавитесь от этой проблемы.)

По приведенным ниже ссылкам можно найти дополнительную информацию по этим темам.

Дополнительная информация

В этом разделе содержится небольшая дополнительная информация о сопоставлении между байтами, кодовыми точками и символами для тех, кому это интересно. Не стесняйтесь просто перейти к разделу «Дополнительная литература».

Обратите внимание, что числа кодовых точек обычно выражаются в шестнадцатеричной системе счисления, т.е. основание 16. Например, 233 в шестнадцатеричной форме равно E9. Значения кодовой точки Unicode обычно записываются в форме U+00E9.

В наборе кодированных символов ISO 8859-1 (также известном как Latin1) значение десятичного кода для буквы é равно 233. Однако в ISO 8859-5 та же самая кодовая точка представляет кириллический символ щ .

Эти наборы символов содержат менее 256 символов и напрямую сопоставляют кодовые точки со значениями байтов, поэтому кодовая точка со значением 233 представлена ​​одним байтом со значением 233. Обратите внимание, что только контекст определяет, будет ли этот байт представляет либо é, либо sch .

Есть и другие способы обработки символов из ряда сценариев. Например, с помощью набора символов Unicode вы можете представлять оба символа в одном наборе. На самом деле Unicode содержит в одном наборе, вероятно, все символы, которые вам когда-либо понадобятся. В то время как буква é по-прежнему представлена ​​кодовой точкой 233, кириллический символ щ теперь имеет кодовую точку 1097.

В наши дни байты обычно состоят из 8 бит. Существует только 2 8 (т.е. 256) уникальных способов объединения 8 битов.

С другой стороны, 1097 — слишком большое число, чтобы его можно было представить одним байтом*. Итак, если вы используете кодировку символов для текста Unicode, называемую UTF-8, щ будет представлена ​​двумя байтами. Однако значение кодовой точки не просто получается из значения двух соединенных вместе байтов — требуется более сложное декодирование.

Другие символы Юникода соответствуют одному, трем или четырем байтам в кодировке UTF-8.

Кроме того, обратите внимание, что буква é также представлена ​​двумя байтами в UTF-8, а не одним байтом, который используется в ISO 8859-1. (Только символы ASCII кодируются одним байтом в UTF-8.)

UTF-8 — это наиболее широко используемый способ представления текста Unicode на веб-страницах, и вы всегда должны использовать UTF-8 при создании своих веб-страниц и баз данных. Но, в принципе, UTF-8 — это лишь один из возможных способов кодировки символов Юникода. Другими словами, одна кодовая точка в наборе символов Unicode может фактически отображаться в различные последовательности байтов, в зависимости от того, какая кодировка использовалась для документа. Кодовые точки Unicode могут быть сопоставлены с байтами с использованием любой из кодировок, называемых UTF-8, UTF-16 или UTF-32. Символ деванагари क с кодовой точкой 2325 (что равно 915 в шестнадцатеричном представлении) будет представлен двумя байтами при использовании кодировки UTF-16 (09 15), тремя байтами при использовании UTF-8 (E0 A4 95) или четырьмя байтами. байт с кодировкой UTF-32 (00 00 09 15).

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

Дополнительная литература

Начинаете? Введение в наборы символов и кодировки — указывает на другие документы W3C, связанные с наборами символов и кодировками

Учебное пособие, Работа с кодировками символов в HTML и CSS. Советы по выбору кодировки, ее объявлению и другим темам, связанным с HTML и CSS.

Настройка кодировки в веб-приложениях для разработки — как заставить ваш редактор сохранять в другой кодировке список сред редактирования.

Напишите функцию char_counter, которая подсчитывает количество определенных символов в текстовом файле. Функция принимает два входных аргумента: fname, вектор символов имени файла и character, количество символов, которое она считает в файле. Функция возвращает charnum, количество найденных символов. Если файл не найден или символ не является допустимым символом, функция возвращает -1. В качестве примера рассмотрим следующий запуск. Файл "simple.txt" содержит одну строчку: "В этом файле должно быть ровно три а-са".

if double(character)>=35 && double(character)

4 комментария

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

asad - Я не понимаю, в чем ваш вопрос. Если я запускаю код в файле, который содержит строку «В этом файле должно быть ровно три а-са», то ответ (из функции) — три. что правильно. Какой ответ или ошибку вы наблюдаете?

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Переменная charnum имеет неверное значение. При тестировании с помощью '' ваше решение вернуло -1, что неверно. (0).

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Ответы (15)

Прямая ссылка на этот ответ

Прямая ссылка на этот ответ

2 комментария

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

fscanf() без подсчета просит MATLAB прочитать как можно больше в файле, который все еще соответствует заданному формату. Дан формат %c, который соответствует любому символу, и, поскольку каждый байт, хранящийся в файле, может быть интерпретирован как символ, результатом использования fscanf с форматом '%c' и без подсчета будет чтение всего остального файл по одному символу за раз.

<р>.Когда-нибудь я должен проверить с R2020a или более поздней версии и потоком байтов, который не представляет допустимую UTF8, чтобы увидеть, прекратит ли чтение %c в этот момент.

Прямая ссылка на этот ответ

Прямая ссылка на этот ответ

3 комментария

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот ответ

Прямая ссылка на этот ответ

сделано с помощью fgets и циклов while

1 комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Мы не рекомендуем использовать sum в качестве имени переменной: очень часто можно запутаться, а также использовать sum() в качестве имени функции суммирования в том же коде, где вы используете sum в качестве переменной.< /p>

Прямая ссылка на этот ответ

Прямая ссылка на этот ответ

4 комментария

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Этот код не закрывает файл должным образом. Затем после определенного количества вызовов Matlab больше не может открывать файлы.

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

Прямая ссылка на этот комментарий

fread() с '*char' и inf size приведет к тому, что fread() вернет вектор символов, который содержит все оставшиеся символы в файле. Они будут храниться в переменной с именем line

Операция == – это оператор проверки на равенство. В этом контексте == используется для сравнения кодов символов (целых), используемых для представления данных в строковой переменной, с кодом символа, который используется для представления символа, хранящегося в charac, который, как известно, является одним символом. . Итак, внутри у вас есть числовой вектор («линия»), сравниваемый с числовым скаляром («charac»). Результат сравнения вектора и скаляра определяется MATLAB как логический вектор, в котором значение равно false для каждого места, где сравнение не удалось, и значение true для каждого места, где сравнение прошло успешно. Таким образом, вывод == представляет собой логический вектор той же длины, что и переменная line .

Что вам нужно знать после этого момента, так это то, что логическая ложь представлена ​​числовым значением 0, а логическая истина представлена ​​числовым значением 1. По этой причине, когда вы хотите узнать, в скольких местоположениях выполняется сравнение, вы можете sum() вектор, который вносит 1 в сумму для каждого истинного, и результатом в конце будет количество мест, где сравнение было истинным.

Итак, в su будет сохранено количество мест, где символ в переменной line совпадает с символом в переменной charac .

Целевая аудитория: кодировщики HTML (использующие редакторы или скрипты), разработчики скриптов (PHP, JSP и т. д.), кодировщики CSS, менеджеры веб-проектов и все, кто плохо знаком с кодировками символов и нуждается в ознакомлении с тем, как выбирать и применить кодировку символов.

Вопрос

Какую кодировку символов следует использовать для моего контента и как ее применить к своему контенту?

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

В этой статье предлагаются простые советы о том, какую кодировку символов использовать для вашего контента и как ее применять, т.е. как на самом деле создать документ в этой кодировке.

Если вам нужно лучше понять, что такое символы и кодировки символов, см. статью Кодировки символов для начинающих .

Быстрый ответ

Выберите UTF-8 для всего контента и рассмотрите возможность преобразования любого контента в устаревших кодировках в UTF-8.

Если вы действительно не можете использовать кодировку Unicode, убедитесь, что выбранная вами кодировка страницы широко поддерживается браузерами и что эта кодировка не входит в список кодировок, которых следует избегать согласно последним спецификациям.< /p>

В дополнение к объявлению кодировки документа внутри документа и/или на сервере вам необходимо сохранить текст в этой кодировке, чтобы применить ее к вашему контенту.

Разработчикам также необходимо убедиться, что различные части системы могут взаимодействовать друг с другом.

Подробнее

Применение кодировки к вашему контенту

Авторы содержания должны объявить кодировку символов своих страниц, используя один из методов, описанных в разделе Объявление кодировок символов в HTML.

Однако важно понимать, что простое объявление кодировки внутри документа или на сервере фактически не изменит байты; вам нужно сохранить текст в этой кодировке, чтобы применить его к вашему контенту. (Объявление просто помогает браузеру интерпретировать последовательности байтов, в которых хранится текст.)

При необходимости установите кодировку UTF-8 по умолчанию для новых документов в вашем редакторе. На рисунке ниже показано, как это можно сделать в настройках редактора, такого как Dreamweaver.

Информацию о «Форме нормализации Unicode» см. в разделе Нормализация в HTML и CSS . Сведения о подписи Unicode (BOM) см. в разделе Знак порядка байтов (BOM) в HTML .

Разработчикам также необходимо убедиться, что различные части системы могут взаимодействовать друг с другом. Веб-страницы должны иметь возможность беспрепятственно взаимодействовать с внутренними сценариями, базами данных и т.п. Конечно, все они лучше всего работают и с UTF-8. Разработчики могут найти подробный набор моментов, которые следует учитывать, в статье Миграция на Unicode .

Зачем использовать кодировку UTF-8?

Страница HTML может быть только в одной кодировке. Вы не можете кодировать разные части документа в разных кодировках.

Кодировка на основе Unicode, такая как UTF-8, может поддерживать многие языки и может вмещать страницы и формы на любом сочетании этих языков. Его использование также устраняет необходимость в логике на стороне сервера для индивидуального определения кодировки символов для каждой обслуживаемой страницы или каждой входящей отправки формы. Это значительно упрощает работу с многоязычным сайтом или приложением.

Кодировка Unicode также позволяет смешивать на одной странице гораздо больше языков, чем любая другая кодировка.

Поддержка данной кодировки, даже кодировки Unicode, не обязательно означает, что пользовательский агент будет правильно отображать текст. Многочисленные шрифты, такие как арабский и индийский, требуют дополнительных правил для преобразования последовательности символов в памяти в соответствующую последовательность глифов шрифта для отображения.

В наши дни любые барьеры для использования Unicode очень низки. Фактически, в январе 2012 года Google сообщил, что более 60% Интернета в их выборке из нескольких миллиардов страниц теперь используют UTF-8. Добавьте к этому цифру для веб-страниц, состоящих только из ASCII (поскольку ASCII является подмножеством UTF-8), и эта цифра возрастет примерно до 80%.

Существует три различных кодировки символов Unicode: UTF-8, UTF-16 и UTF-32. Из этих трех для веб-контента следует использовать только кодировку UTF-8. В спецификации HTML5 говорится: "Авторам рекомендуется использовать UTF-8. Специалисты по проверке соответствия могут посоветовать авторам не использовать устаревшие кодировки. Инструменты разработки должны по умолчанию использовать UTF-8 для вновь создаваемых документов".

В частности, обратите внимание, что все символы ASCII в кодировке UTF-8 используют точно такие же байты, что и кодировка ASCII, что часто способствует взаимодействию и обратной совместимости.

Дополнительная информация

Информация в этом разделе относится к вещам, которые обычно вам не нужны, но которые включены сюда для полноты картины.

Что делать, если я не могу использовать кодировку UTF-8?

Если вы действительно не можете избежать использования кодировки символов, отличной от UTF-8, вам придется выбирать из ограниченного набора имен кодировок, чтобы обеспечить максимальную совместимость и максимально длительный срок удобочитаемости вашего контента, а также минимизировать безопасность. уязвимости.

До недавнего времени реестр IANA был местом, где можно было найти имена для кодировок. Реестр IANA обычно включает несколько имен для одной и той же кодировки. В этом случае вы должны использовать имя, обозначенное как «предпочтительное».

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

Обратите внимание, однако, что наличие имени в любом из этих источников не обязательно означает, что можно использовать эту кодировку. В следующем разделе приведены кодировки, которых следует избегать.

Избегайте этих кодировок

Спецификация HTML5 указывает на ряд кодировок, которых следует избегать.

В документах не должны использоваться JIS_C6226-1983, JIS_X0212-1990, HZ-GB-2312, JOHAB (кодовая страница Windows 1361), кодировки на основе ISO-2022 или кодировки на основе EBCDIC. Это связано с тем, что они позволяют кодовым точкам ASCII представлять символы, отличные от ASCII, что представляет угрозу безопасности.

Кроме того, в документах не должны использоваться кодировки CESU-8, UTF-7, BOCU-1 или SCSU, поскольку они никогда не предназначались для веб-контента, а спецификация HTML5 запрещает браузерам их распознавать.

Спецификация также настоятельно не рекомендует использовать UTF-16, а использование UTF-32 «особенно не рекомендуется».

Заменяющая кодировка, указанная в спецификации кодировки, на самом деле не является кодировкой; это запасной вариант, который сопоставляет каждый октет с кодовой точкой Unicode U+FFFD REPLACEMENT CHARACTER . Очевидно, что передавать данные в такой кодировке бесполезно.

Определяемая пользователем кодировка x – это однобайтовая кодировка, младшая половина которой – это ASCII, а верхняя – сопоставлена ​​с частной областью использования Unicode (PUA). Как и в случае с PUA в целом, лучше избегать использования этой кодировки в общедоступном Интернете, поскольку она наносит ущерб функциональной совместимости и долгосрочному использованию.

В этой статье мы сосредоточимся на открытии, закрытии, чтении и записи данных в текстовом файле.

Режимы доступа к файлам

  1. Только чтение (‘r’): открыть текстовый файл для чтения. Ручка располагается в начале файла. Если файл не существует, возникает ошибка ввода-вывода. Это также режим по умолчанию, в котором открывается файл.
  2. Чтение и запись («r+»): открытие файла для чтения и записи. Ручка располагается в начале файла. Вызывает ошибку ввода-вывода, если файл не существует.
  3. Только запись («w»): открыть файл для записи. Для существующего файла данные усекаются и перезаписываются. Ручка располагается в начале файла. Создает файл, если файл не существует.
  4. Запись и чтение («w+»): открытие файла для чтения и записи. Для существующего файла данные усекаются и перезаписываются. Дескриптор располагается в начале файла.
  5. Только добавление (‘a’): открыть файл для записи. Файл создается, если он не существует. Ручка располагается в конце файла. Записываемые данные будут вставлены в конце после существующих данных.
  6. Добавить и прочитать (‘a+’): открыть файл для чтения и записи. Файл создается, если он не существует. Ручка располагается в конце файла. Записываемые данные будут вставлены в конце после существующих данных.

Открытие файла

Это делается с помощью функции open(). Для этой функции не требуется импортировать модуль.

Файл должен находиться в том же каталоге, что и файл программы python, в противном случае полный адрес файла должен быть записан вместо имени файла.
Примечание. Перед именем файла ставится буква r, чтобы предотвратить появление символов в строке имени файла. рассматриваться как специальный символ. Например, если в адресе файла есть \temp, то \t интерпретируется как символ табуляции и возникает ошибка неверного адреса. r делает строку необработанной, т. е. сообщает, что строка не содержит специальных символов. r можно игнорировать, если файл находится в том же каталоге и адрес не помещается.

Читайте также: