Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

ANSI или ASCII   Найти похожие ветки 

 
Андрей1   (2004-08-14 10:59) [0]

Доброе утро всем!

Подскажите, существует ли функция определяющая кодировку текста?
Нужно считать текстовый файл, а затем определить в какой кодировке
он написан в ANSI или ASCII.
Огромное спасибо!


 
Anatoly Podgoretsky ©   (2004-08-14 11:03) [1]

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


 
KSergey ©   (2004-08-14 11:03) [2]

На 100% - это невозможно
А вообще - есть яндекс. Таких ф-ций попадалось мне - куча.


 
TUser ©   (2004-08-14 11:21) [3]

Вроде даже на этом сайте был такой компонент.


 
Sergey Kaminski ©   (2004-08-14 12:29) [4]

ну, если так простенько "в лоб", по статистике, то для русских текстов сойдет и нечто в таком роде:


function IsStringANSI(S: string): TTextCodePage;
type
 CharSet = set of char;
const
 cp1251Set: CharSet = ["А".."Я","а".."я"];
 cp866Set: CharSet  = [ #$80..#$9F,#$A0..#$EF];
var
 i: Integer;
 Ch: Char;
 cp1251Counter,
 cp866Counter: Integer;
begin
 cp1251Counter := 0;
 cp866Counter := 0;
 Result := cpDefault;

 for i := 1 to Length(S) do
 begin
   if S[I] in cp1251Set then
     Inc (cp1251Counter)
   else
     if S[I] in cp866Set then
       Inc (cp866Counter);
 end;

 Result := (cp1251Counter > cp866Counter);
end;



 
Sergey Kaminski ©   (2004-08-14 12:31) [5]

Сорри, тип возвр. результата Boolean


 
Anatoly Podgoretsky ©   (2004-08-14 13:01) [6]

Это не будет работать, поскольку "А".."Я","а".."я"] входит как подмножество в #$A0..#$EF, а условие построено ка if then else


 
Sergey Kaminski ©   (2004-08-14 13:35) [7]

>> Anatoly Podgoretsky ©   (14.08.04 13:01) [6]

Ох, вот что случается, когда неразобравшись вставляешь куски чужого кода :(


 
Cobalt ©   (2004-08-14 13:46) [8]

2 Anatoly Podgoretsky ©   (14.08.04 11:03) [1]
Есть интересная страничка, мне очень понравилась, рекомендую всем:
http://koi8.pp.ru/prosto.html


 
leonon ©   (2004-08-14 13:49) [9]

После долгих поисков я написал такую вот функцию:

function CheckWinText(S : string) : boolean;
Var
 I, Count1, Count2 : longint;
 T1, T2, Tmp : string;
Const
 LengthText  = 100;
 RussianText =
  "ть ий ый ат ст ва ны ся ра ро ов ши ен по ит ре ни ка пр ос ив ер вш ан ьс ри " +
  "ав нн щи ор за во на ко от но ол ле те од ли ти ло вы ск то ес ел ющ ль та ас " +
  "об тр ет ве йс он ал ин не ар ир ис ие ла ки ик пе аз ме до че аю де ок ев оп " +
  "чи ом со ви ем ма мо ут ед ди го па ыв из ог ру да ад ну сп кр тв ич ты ят бе " +
  "ак ля ми га оз бо ьн ек гр оч пи си ам пл бр ча се жи ез сл им ап ия мы нт ус " +
  "ци тн же ба са ку би ил ой еп ож ур ря аг кл аб зн дн бл рн чн вл ач ту ня зо " +
  "жа ше це еч ги аж ей хо ры тс уп зи зв лу уд сн ид ша ул сс др иц ио вн уч ег " +
  "св ду пу гл рт ще уб ае ум ув зд иг кт ца уш су еж лю тк нь бу см ха ыс ох ье " +
  "му лы ук фи вс зм вк уж ац ящ нс дв нк ип сы еб ах ян ую еш аш ош гн ец мн яв " +
  "уг ун рм чк ои ща фо нд рк жд рс ыт яю тя ое вр сь ео лк гу ды жн ып зы зр иб " +
  "хи вя ащ ух дс зе ге зл ыр рг шк оо хл вз чу ык кс ех аф кн тл зу рд лл ущ зг " +
  "ву их дк ыл иа зб ыш яз рв нц ья нч ай ьк уз яд ищ оф рж фа пы иж ещ шл аи йн " +
  "хр хн бн яс фе вт рь мп иф бы шн чь оя йш ощ мл ке дл кв яг лн пт ее сч мя пя " +
  "дя рш оу иш хв рч ьт ыг яж нг сх ют йк пн ср цо еи ых ъе оц ыд рб чо ын эк яч " +
  "вп як юб ям дп сц бс шт уе ым рх юч ая ыч сш тч ея ау ыб вд фр дч тп мб яе еф " +
  "зж шь еу дь щу яр тм ыз жу рп мм еа мк сб жо кц жк ьм зя рл тт эл шу зк ях лт " +
  "рю пс рз фл сг ху пь бщ уа чт дм юр юд шо тд хт рр бм нф пп вь ою ею ью рц дц " +
  "фу дж тб ъя дш бъ йт хм бк вм лз йм ьц ыж сд бв дт яц сф юн нз вв пч тю эт йд " +
  "вч зь ьз цв лг дг ьш пк ял бь зъ яб мс бя юк кк лд лч вщ рщ лб мр иу шп зт дд " +
  "жг жь жм юс дб эр фт оа юм ню ьщ тг ьч юз бд уи лж жж мч ьд кш нв шв лс яп бж " +
  "щн оэ дз яй уф ао рф ыщ эп юх уй хс ьи юл дю эм съ юш эн чл бт йч цк эс сж тш " +
  "гч цы вц мь уя зз аэ нщ нж гш гм ьв ьб йц гв мф гк хш ии зш зч хе лв дъ бх бю " +
  "юж фф йл уц вб жр кз вг тх нш шм сю ьг нр тщ ьо лм тц бц юг уо нх лп чр ьф бч " +
  "бб хч яш ию гс ыя мц бз юц йо пц эв дх бш хк фс фм пш чм мщ гд хг фн въ эф тз " +
  "тъ бг щр хп жб чш мв ые вх чв ьп юй йр цу вж тф йб ыц жл мт тж йщ йф уэ шю зю " +
  "яи мг юп ъю фы ыу ыи мш";
begin
 // Получаем тестируемые строки
 if Length(Trim(S))>LengthText then
   T1 := Copy(Trim(S), 1, LengthText) else T1 := Trim(S);
 T2 := OemToAnsiStr(T1);
 // Преобразовываем текст к нижнему регистру
 T1 := AnsiLowerCase(T1);
 T2 := AnsiLowerCase(T2);
 // Обнуляем счетчики
 Count1 := 0;
 Count2 := 0;
 // Организовываем цикл по числу слогов
 for I:=1 to Length(T1)-1 do begin
   Tmp := Copy(T1, I, 2);
   if Pos(Tmp, RussianText)<> 0 then Inc(Count1);
   Tmp := Copy(T2, I, 2);
   if Pos(Tmp, RussianText)<> 0 then Inc(Count2);
 end;
 // Результат
 Result := Count1 >= Count2;
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.035 c
3-1091531793
Valer
2004-08-03 15:16
2004.08.29
Перевод строки (возврат каретки)


1-1092292319
Fynjy
2004-08-12 10:31
2004.08.29
Фокус


6-1087497769
juiceman
2004-06-17 22:42
2004.08.29
сетевой кабель подключен


1-1092722107
СержК
2004-08-17 09:55
2004.08.29
Как закрыть OLE объект ?


14-1092225719
Тень отца Жука
2004-08-11 16:01
2004.08.29
Михайличенко уволен. Вместе него Сабо





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский