Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Определение кодировки (https://javascript.ru/forum/misc/14062-opredelenie-kodirovki.html)

ozzymous 27.12.2010 11:44

Определение кодировки
 
Вложений: 1
Здравствуйте, я столкнулся с проблемой корректного прочтения текстового файла. Специальным софтом (от производителя) информация считывается с TouchMemory-носителя в файл, прикрепленный к этому сообщению. Блокнотом, стандартным просмотрщиком FAR'a открывается корректно. Когда следующим скриптом считываю его, то в переменной str получаю пару непонятных символов и всё.
fso = WScript.CreateObject("Scripting.FileSystemObject");
file = fso.GetFile("my_tm");
//открываем файл на чтение
text_stream = file.OpenAsTextStream(1);
str = text_stream.ReadAll();
text_stream.Close();

Искал в интернете способы перекодировки, нашел этот:
var Stream1 = WScript.CreateObject("ADODB.Stream");
var Stream2 = WScript.CreateObject("ADODB.Stream");
Stream1.Type = 2;
Stream1.Mode = 3;
Stream1.Charset = "??????";
Stream2.Type = 2;
Stream2.Mode = 3;
Stream2.Charset = "Windows-1251";
Stream1.Open();
Stream2.Open();
Stream1.LoadFromFile("my_tm");
Stream1.CopyTo(Stream2, -1);
Stream1.Close;
Stream2.SaveToFile("my_tm1", 2);
Stream2.Close();

Вместо вопросительных знаков подставлял все кодировки, которые нашел в реестре, но результат такой же, как и в первом случае - полученный файл нормально открывается просмотрщиками, но некорректно считывается JScript'ом.
Подскажите пожалуйста, как определить кодировку исходного файла, либо как корректно считать его JScript'ом.
Заранее благодарен.

monolithed 27.12.2010 17:05

что-то типа такого (но лучше задайте свой вопрос на форуме по VB):
strTextFile = "C:\text.txt"

Function GetCharset(ByVal strTextFile)
    Const adTypeText = 2
    Const adModeReadWrite = 3

    With WScript.CreateObject("ADODB.Stream")
        .Type = adTypeText
        .Mode = adModeReadWrite
        .Open
        .Charset = "_autodetect_all"
        .LoadFromFile(strTextFile)
        GetCharset = .Charset
        .Close
    End With
End Function

ozzymous 28.12.2010 12:40

Получаю то же самое "_autodetect_all" :(

DooMer 30.12.2010 13:15

вроди эта умеет определять
тынц

ozzymous 11.01.2011 10:51

не помогло(

monolithed 11.01.2011 10:58

ozzymous, скажите для чего вам это нужно (задача), может есть более простые решения....

ozzymous 11.01.2011 11:04

Необходимо считать скриптом из этого файла информацию для отображения в диалоговом окне. В конечном итоге это будет скрипт, позволяющий просмотреть, какие учетные записи сохранены в ТМ-носителе, ну и как бонус, возможность записи туда новых. Все работает, но только если полученный файл вручную пересохранить тем же блокнотом. Если это делается скриптом, то результата нет, хотя в принципе и то и другое сохраняют в Win-1251.


Часовой пояс GMT +3, время: 16:53.