| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Коды символов |
| Автор: Paradox 31.10.2003, 09:25 |
| Как можно перевести строки из виндовской кодировки в досовсую и наоборот и как узнать в какой кодировке представлен текстовый файл (приложение консольное) ? |
| Автор: Akella 31.10.2003, 09:53 |
| Этот алгоритм позволяет перекодировать текст. Реализованы кодировки Windows-1251, KOI8-R, ISO-8859-5 и DOS. Кодировка – это таблица, в которой указано, например, что символ под номером 160 - это русская буква "а", а под номером 150 – "Ц" и т. д. Кодировки различаются номерами русских букв (как располагать английские буквы договорились). Разные компьютеры в Интернете используют разные кодировки. И поэтому, когда русский текст идет по Интернету, его многократно перекодируют. Этот алгоритм обеспечивает высокую скорость перекодирования больших объемов данных. procedure TForm1.Button1Click(Sender: TObject); var code1, code2: TCode; s: string; c: char; i: integer; chars: array [char] of char; str: array [TCode] of string; begin case ComboBox1.ItemIndex of 1: code1 := koi; 2: code1 := iso; 3: code1 := dos; else code1 := win; end; case ComboBox2.ItemIndex of 1: code2 := koi; 2: code2 := iso; 3: code2 := dos; else code2 := win; end; s := Memo1.Text; Str[win] := 'АаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя'; Str[koi] := 'юЮаАбБцЦдДеЕфФгГхХиИйЙкКлЛмМнНоОпПяЯрРсСтТуУжЖвВьЬыЫзЗшШэЭщЩчЧъЪ'; Str[iso] := 'РрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяа№бёв?гѓдєеѕжізїијйљкњлћм?н§оўпџ'; Str[dos] := 'Ђ ?Ў‚ўѓЈ„¤…Ґ†¦‡§?Ё‰©ЉЄ‹"Њ?Ћ®?Ї?а'б'в“г”д•е–ж—з?и™йљк›лњм?нћоџп'; for c := #0 to #255 do Chars[c] := c; for i := 1 to Length(Str[win]) do Chars[Str[code2][i]] := Str[code1][i]; for i := 1 to Length(s) do s[i] := Chars[s[i]]; Memo2.Text := s; end; Протестируй! Если будут ошибки сообщи! |
| Автор: Paradox 31.10.2003, 11:24 | ||
| А как можно из командной строки считать "(двойные кавычки, а не две одинарных) таким образом, чтобы программа не думала что это пустая строка. Командная строка имеет вид
|
| Автор: p0s0l 31.10.2003, 17:00 |
| На самом деле " не игнорируется, а считается за часть параметра. Но т.к. у тебя нет закрывающей кавычки, то всё что идет после " будет считаться последним параметром. Можно попробовать через GetCommandLine самому разбивать командную строку на параметры. |
| Автор: cot 1.11.2003, 07:11 |
| А почему не использовать API OemToChar и CharToOem? |