|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.04.2010, 13:54 | #1 |
Регистрация: 17.03.2010
Сообщений: 5
|
Определить кодировку
Начальное задание было написать программу на ассемблере(NASM Linux) для определения кодировки в текущей директории(кодировки KOI8 и CP866).Написал программу на С ,чтобы лучше понять как работает алгоритм на практике,а потом узнал ,что если использовать только те функции ,для которых есть системные вызовы ,то дизассемблировав код на С можно получить код на ассе.Помогите преобразовать код(те места в которых есть проблемы пометил на коде)
Код:
Последний раз редактировалось Stilet; 17.06.2014 в 09:27. |
17.06.2014, 08:55 | #2 |
Новичок
Джуниор
Регистрация: 25.09.2010
Сообщений: 1
|
Вот мои способы определения кодировок KOI8R и UTF8
function IsKOI8REncodedString(S:String):Bool ean;
var i:integer; LU,LL:integer; EX:String; begin result:=false; S:=TRIM(S); if S='' then exit; EX:='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬ ЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэю я'; LU:=1;LL:=1; for i:=1 to length(S) do if pos(S[i],EX)>0 then begin if S[i]=ansiuppercase(S[i]) then LU:=LU+1; if S[i]=ansilowercase(S[i]) then LL:=LL+1; end; If (LU/LL)>1 then result:=true else Result:=false; end; // ------------------------------------------------------------------------ function IsUTF8EncodedString(S:String):Boole an; begin if s='' then result:=false else if length(UTF8Decode(S))=0 then Result:=false else result:=true; end; // ------------------------------------------------------------------------ function IsBase64EncodedString(S:String):Boo lean; var i:integer; EX:String; begin EX:=#$00+#$01+#$02+#$03+#$04+#$05+# $06+#$07+#$08+#$09+#$0A+#$0B+#$0C+# $0D+#$0E+#$0F+#$10+#$11+#$12+#$13 +#$14+#$15+#$16+#$17+#$18+#$19+#$1A +#$1B+#$1C+#$1D+#$1E+#$1F+#$20+#$21 +#$22+#$23+#$24+#$25+#$26+#$27 +#$28+#$29+#$2A+#$2C+#$2D+#$2E+#$3A +#$3B+#$3C+#$3E+#$3F+#$40+#$5B+#$5C +#$5D+#$5E+#$5F+#$60+#$7B+#$7C +#$7D+#$7E+#$7F+#$80+#$81+#$82+#$83 +#$84+#$85+#$86+#$87+#$88+#$89+#$8A +#$8B+#$8C+#$8D+#$8E+#$8F+#$90 +#$91+#$92+#$93+#$94+#$95+#$96+#$97 +#$98+#$99+#$9A+#$9B+#$9C+#$9D+#$9E +#$9F+#$A0+#$A1+#$A2+#$A3+#$A4 +#$A5+#$A6+#$A7+#$A8+#$A9+#$AA+#$AB +#$AC+#$AD+#$AE+#$AF+#$B0+#$B1+#$B2 +#$B3+#$B4+#$B5+#$B6+#$B7+#$B8 +#$B9+#$BA+#$BB+#$BC+#$BD+#$BE+#$BF +#$C0+#$C1+#$C2+#$C3+#$C4+#$C5+#$C6 +#$C7+#$C8+#$C9+#$CA+#$CB+#$CC +#$CD+#$CE+#$CF+#$D0+#$D1+#$D2+#$D3 +#$D4+#$D5+#$D6+#$D7+#$D8+#$D9+#$DA +#$DB+#$DC+#$DD+#$DE+#$DF+#$E0 +#$E1+#$E2+#$E3+#$E4+#$E5+#$E6+#$E7 +#$E8+#$E9+#$EA+#$EB+#$EC+#$ED+#$EE +#$EF+#$F0+#$F1+#$F2+#$F3+#$F4 +#$F5+#$F6+#$F7+#$F8+#$F9+#$FA+#$FB +#$FC+#$FD+#$FE+#$FF; Result:=true; s:=TRIM(ansireplacestr(ansireplaces tr(S,#13,''),#10,'')); if length(S)/2<>trunc(length(S)/2) then Result:=false else for i:=1 to length(EX) do if pos(EX[i],S)>0 then Result:=false; end; Последний раз редактировалось xeugenex; 17.06.2014 в 11:00. Причина: UPD: Малость подправил и убрал лишнее. Старый вариант KOI8 работал только на больших текстах, а на мелких давал погрешности. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как поменять кодировку windows | Silverstreet | Помощь студентам | 4 | 23.01.2010 21:40 |
AJAX выводит не ту кодировку | mogul82 | JavaScript, Ajax | 2 | 05.01.2009 19:27 |
Про кодировку... | Lich | Работа с сетью в Delphi | 5 | 29.12.2008 10:32 |
подскажите кодировку для казахстана. | Sjava | HTML и CSS | 4 | 17.07.2007 15:08 |