Почему у меня не получается правильно определить кодировку файла с помощью функции
_Encoding_GetCyrillicANSIEncoding?
Код:
Func _Encoding_GetCyrillicANSIEncoding($sString)
Local $iCode, $iWIN = 0, $iDOS = 0, $iKOI = 0, $iISO = 0
Local $VarString = StringSplit($sString, "")
For $i = 1 To $VarString[0]
$iCode = Asc($VarString[$i])
Select
Case $iCode = 192 Or $iCode = 224 Or $iCode = 200 Or $iCode = 232 Or $iCode = 206 Or $iCode = 238 Or $iCode = 210 Or $iCode = 242
$iWIN += 1
Case $iCode = 128 Or $iCode = 160 Or $iCode = 136 Or $iCode = 168 Or $iCode = 142 Or $iCode = 174 Or $iCode = 146
$iDOS += 1
Case $iCode = 225 Or $iCode = 193 Or $iCode = 233 Or $iCode = 201 Or $iCode = 239 Or $iCode = 207 Or $iCode = 244 Or $iCode = 212
$iKOI += 1
Case $iCode = 176 Or $iCode = 208 Or $iCode = 184 Or $iCode = 216 Or $iCode = 190 Or $iCode = 222 Or $iCode = 194
$iISO += 1
Case $iCode = 226
$iDOS += 1
$iISO += 1
EndSelect
Next
If $iKOI >= $iWIN And $iKOI > $iDOS And $iKOI > $iISO Then
Return "KOI8-R"
ElseIf $iWIN > $iKOI And $iWIN > $iDOS And $iWIN > $iISO Then
Return "WINDOWS-1251"
ElseIf $iDOS > $iKOI And $iDOS > $iWIN And $iDOS > $iISO Then
Return "IBM-866"
ElseIf $iISO > $iWIN And $iISO > $iDOS And $iISO > $iKOI Then
Return "ISO-8859-5"
Else
Return False
EndIf
EndFunc
При любой кодировке файла, она возвращает
False.
И вообще, существует ли безошибочный способ для такой задачи?
_Encoding_GetFileEncoding не считается. Она работает, но она ограничена только
ANSI,
UTF-8,
UTF-16 и
UTF-32.
Хотелось бы, чтобы определялись те же
OEM-866,
KOI8, вообщем, любые кириллические кодировки.