DarkWishmaster
18.03.2011 20:49
Привет. Как я понял тип char работает с символами из ASCII, но там нету русских букв, китайский и.т
А вот мне надо составить програму:
Например есть текст. документ из русских букв и надо транслировать его в англ. Это вообще возможно?
например : русский - russkii
-TarasBer-
18.03.2011 21:07
В char есть русские буквы.
DarkWishmaster
18.03.2011 21:23
Цитата(-TarasBer- @ 18.03.2011 18:07)
В char есть русские буквы.
когда их читаю из документов то их показывают какими то непонятными символами.
Мне надо читать из файла всё как есть и транслировать в другой язык, в моем случае в румынском, где так же есть символы типа 'ă', 'î' 'ş', и.т Можно как нибудь сделал что-бы паскаль их распозновал?
-TarasBer-
18.03.2011 23:28
Паскаль работает в ДОС-кодировке, документ сохранён в виндовой кодировке.
Поэтому такая фигня.
Могу посоветовать набить код в программе, поддерживающей виндовую кодировку.
код такого плана:
case c[i] of
'А' : res := res + 'A';
'Б' : res := res + 'B';
'В' : res := res + 'V';
end;
DarkWishmaster
19.03.2011 0:26
Цитата(-TarasBer- @ 18.03.2011 20:28)
Паскаль работает в ДОС-кодировке, документ сохранён в виндовой кодировке.
Поэтому такая фигня.
Могу посоветовать набить код в программе, поддерживающей виндовую кодировку.
код такого плана:
case c[i] of
'А' : res := res + 'A';
'Б' : res := res + 'B';
'В' : res := res + 'V';
end;
я пока тока язык Паскаль, так что...
А Паскаль АBC или FPC поддерживают виндовую кодировку?
-TarasBer-
19.03.2011 0:43
> А Паскаль АBC
Да
> или FPC
Не знаю. У него среда же с закосом под Турбо, так что хз, какая там кодировка. Да проверь, тупо в блокноте вбей русский текст, в ФПЦ открой и посмотри, что будет.
> поддерживают виндовую кодировку?
DarkWishmaster
19.03.2011 1:11
Цитата(-TarasBer- @ 18.03.2011 21:43)
> А Паскаль АBC
Да
> или FPC
Не знаю. У него среда же с закосом под Турбо, так что хз, какая там кодировка. Да проверь, тупо в блокноте вбей русский текст, в ФПЦ открой и посмотри, что будет.
> поддерживают виндовую кодировку?
спасибо за помощь. АВС уже видит русский текст а вот символы типа 'ă' 'ş' 'ţ' видет как '?'.
Если он поддерживает виндовую кодировку, значит должен быть способ это исправить?
Вообще-то стандартный ASCII - семибитная телеграфная кодировка и действительно не содержит кириллицы.
Но т.к. принято, что в байте 8 битов, а не 7, широкое распространение получила т.н. расширенная ASCII, в которой кроме 128 стандартных символов ASCII присутствует еще 128. Но т.к. для разных языков потребный набор символов различается, существует масса различных вариантов расширенной таблицы ASCII, называемых кодировками.
В этом случае прочитать текст, не зная, в какой кодовой странице он закодирован, невозможно. Отсюда и "кракозябры".
Собственно, даже вариантов кодировки кириллицы существует не менее 6 (1251-Windows, 866-DOS, ГОСТ, КОИ-8, 8859-5 и MAC).
Решением проблемы разнообразных кодировок является Юникод, имеющий две разновидности:
UTF-16 - двухбайтовая кодировка,
UTF-8 - кодировка с переменным количеством байт на символ. В частности, символы первой половины ASCII - однобайтовые, а символы кириллицы - двухбайтовые.
Никаких препятствий для обработки любой кодировки (включая Юникод) в Паскале - нет. Единственное, достаточно трудоемко их адекватная отображение. Кроме того, можно воспользоваться средствами, скажем, WinAPI.