Неверов Евгений Викторович
QR-код
Меню сайта
Категории раздела
Программирование на языке Паскаль [25]
В данной категории представлены новые функции, созданные на языке Паскаль, которые могут пригодиться при написании своих программ
Программирование на Delphi [19]
В данной категории представлены полезные подпрограммы, которые могут пригодиться при написании своих программ, а также рассматриваются примеры готовых проектов, создаваемых в среде программирования Delphi
Программирование на HTML [1]
В данной категории рассматриваются примеры готовых проектов, создаваемых на языке HTML
Мои программы [1]
Описание разработанных автором программ.
Online-программы [2]
Прочее [42]
Свободная тематика
Мини-чат
200
Наш опрос
Чем Вы занимаетесь?
Всего ответов: 57
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Перевод текста из одной кодировки в другую

На просторах Интернета страницы сайтов имеют текстовую кодировку 'UTF-8', однако язык Паскаль понимает кодировку 'ANSI'. При открытии таких страниц (либо файлов с кодировкой 'UTF-8') мы можем столкнуться с бессмысленным набором символов:

Кодировка UTF-8

Поэтому, для перевода текста из одной кодировки в другую, необходимо использовать следующие функции: AnsiToUtf8, Utf8Encode, Utf8ToAnsi и Utf8Decode, позволяющие преобразовывать строки из одной кодировки в другую.


1. Перевод текста из кодировки ANSI в UTF-8

function AnsiToUtf8(const S: string): UTF8String;
function Utf8Encode(const WS: WideString): UTF8String;

где:

  • S, WS – исходная строка в кодировке ANSI.

2. Перевод текста из кодировки UTF-8 в ANSI

function Utf8ToAnsi(const S: UTF8String): string;
function Utf8Decode(const S: UTF8String): WideString;

где:

  • S – исходная строка в кодировке UTF-8.

3. Перевод HTML-страницы со спецсимволами

К спецсимволам относятся некоторые символы, такие как '&amp;' (&, амперсанд), '&lt;' (<, меньше), '&gt;' (>, больше), '&ndash;' (–, короткое тире), '&minus;' (−, минус), '&mdash;' (—, длинное тире), '&deg;' (°, градус), '&sect;' (§, параграф), '&hellip;' (…, многоточие), '&nbsp;' ( , неразрывный пробел) и др.

Естественно, при преобразования строк с такими спецсимволами сами спецсимволы останутся закодированными, например, 'Температура &minus;25 &deg;C.'. Поэтому нужна функция Utf8ToAnsiSym.

function Utf8ToAnsiSym(s: string): string;
begin
   s:=Utf8ToAnsi(s);
   s:=StringReplaceNew(s, '&amp;', '&', false, false);
   s:=StringReplaceNew(s, '&lt;', '<', false, false);
   s:=StringReplaceNew(s, '&gt;', '>', false, false);
   s:=StringReplaceNew(s, '&ndash;', #150, false, false);
   s:=StringReplaceNew(s, '&minus;', '-', false, false);
   s:=StringReplaceNew(s, '&mdash;', #151, false, false);
   s:=StringReplaceNew(s, '&deg;', #176, false, false);
   s:=StringReplaceNew(s, '&sect;', #167, false, false);
   s:=StringReplaceNew(s, '&hellip;', #133, false, false);
   s:=StringReplaceNew(s, '&nbsp;', #160, false, false);
   { можно добавить и другие спецсимволы }
   Result:=s;
end;

где:

  • s – исходная строка в кодировке UTF-8.

Примечание. Для полноценной работы данной функции необходимо скопировать вспомогательную функцию "Замена символа или фразы на новое значение":

function StringReplaceNew(s, OldPattern, NewPattern: string; RegOld, RegNew: boolean): string;
Категория: Программирование на языке Паскаль | Добавил: newerow1989 (12.03.2016)
Просмотров: 1324 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Код *:
Вход на сайт
Поиск
Друзья сайта
Заработок в Интернете
Для начала необходим Электронный PAYEER® кошелек!
Copyright MyCorp © 2025
Версия для мобильных устройств. Яндекс.Метрика Анализ сайта Проверить мой сайт на ScamAdviser.com