KnigaRead.com/

Андрей Попов - Windows Script Host для Windows 2000/XP

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Андрей Попов, "Windows Script Host для Windows 2000/XP" бесплатно, без регистрации.
Перейти на страницу:

 //Window-кодировке) для всех букв русского алфавита

 RusDict.add("Ђ", "А"); RusDict.add("Ѓ", "Б"); RusDict.add("‚", "В");

 RusDict.add("ѓ", "Г"); RusDict.add("„", "Д"); RusDict.add("…", "Е");

 RusDict.add("р", "Ё"); RusDict.add("†", "Ж"); RusDict.add("‡", "З");

В RusDict.add("€", "Р"); RusDict.add("‰", "Р™"); RusDict.add("Р‰", "Рљ");

 RusDict.add("‹", "Л"); RusDict.add("Њ", "М"); RusDict.add("Ќ", "Н");

В RusDict.add("Р‹", "Рћ"); RusDict.add("РЏ", "Рџ"); RusDict.add("С’", "Р ");

В RusDict.add("вЂ", "РЎ"); RusDict.add("’", "Рў"); RusDict.add("“", "РЈ");

 RusDict.add("”", "Ф"); RusDict.add("•", "Х"); RusDict.add("–", "Ц");

В RusDict.add("—", "Р§"); RusDict.add("В", "РЁ"); RusDict.add("в„ў", "Р©");

 RusDict.add("љ", "Ъ"); RusDict.add("›", "Ы"); RusDict.add("њ", "Ь");

В RusDict.add("Сњ", "Р­"); RusDict.add("С›", "Р®"); RusDict.add("Сџ", "РЇ");

В RusDict.add("В ", "Р°"); RusDict.add("РЋ", "Р±"); RusDict.add("Сћ", "РІ");

В RusDict.add("Р€", "Рі"); RusDict.add("В¤", "Рґ"); RusDict.add("Тђ", "Рµ");

В RusDict.add("СЃ", "С‘"); RusDict.add("В¦", "Р¶"); RusDict.add("В§", "Р·");

В RusDict.add("РЃ", "Рё"); RusDict.add("В©", "Р№"); RusDict.add("Р„", "Рє");

В RusDict.add("В«", "Р»"); RusDict.add("В¬", "Рј"); RusDict.add("В­", "РЅ");

В RusDict.add("В®", "Рѕ"); RusDict.add("Р‡", "Рї"); RusDict.add("Р°", "СЂ");

В RusDict.add("Р±", "СЃ"); RusDict.add("РІ", "С‚"); RusDict.add("Рі", "Сѓ");

В RusDict.add("Рґ", "С„"); RusDict.add("Рµ", "С…"); RusDict.add("Р¶", "С†");

В RusDict.add("Р·", "С‡"); RusDict.add("Рё", "С€"); RusDict.add("Р№", "С‰");

В RusDict.add("Рє", "СЉ"); RusDict.add("Р»", "С‹"); RusDict.add("Рј", "СЊ");

В RusDict.add("РЅ", "СЌ"); RusDict.add("Рѕ", "СЋ"); RusDict.add("Рї", "СЏ");

}

В функции DosToWin из VBScript-сценария StdIn1.vbs (листинг 2.15) реализован другой подход к переводу строки в Windows-кодировку, связанный с преобразованием ANSI-кодов символов:

Function DosToWin(s)

Dim i,k,ss

В ss=""

 For i=1 To Len(s)  ' Цикл по всем символам в строке

  k = Asc(Mid(s,i,1))  ' Определяем ANSI-код i-го символа

В  ' Рзменяем РєРѕРґ k РЅР° РєРѕРґ соответствующего символа РІ

В  ' Windows-РєРѕРґРёСЂРѕРІРєРµ

В  If (128 <= k) And (k <= 175) Then

В В  k=k+64

В  ElseIf (224 <= k) And (k <= 239) Then

В В  k=k+16

В  ElseIf k = 240 Then

В В  k=168

В  ElseIf k = 241 Then

В В  k=184

В  End If

  ss=ss+Chr(k)  ' Возвращаем преобразованную строку

В Next

В DosToWin=ss

End Function

Весь алгоритм этой функции состоит в вычислении по ANSI-коду буквы русского алфавита в DOS-кодировке кода символа в Windows-кодировке, соответствующего этой букве.

Листинг 2.14. Ввод одной строки с помощью метода StdIn.ReadLine (JScript)

/*******************************************************************/

/* РРјСЏ: StdIn1.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В  */

/* Язык: JScript                                                   */

/* Описание: Пример использования метода StdIn.ReadLine            */

/*******************************************************************/

var s,RusDict;  //Объявляем переменные

//Функция для создания объекта Dictionary с парами "ключ-значение", где

//"ключ"-буква в DOS-кодировке, "значение"- символ, соответствующий этой

//Р±СѓРєРІРµ РІ Windows-РєРѕРґРёСЂРѕРІРєРµ

function MakeRusDict() {

  //Создаем объект Dictionary

В RusDict = WScript.CreateObject("Scripting.Dictionary");

 //Заполняем пары "ключ" (символ в DOS-кодировке)-"значение" (символ в

 //Window-кодировке) для всех букв русского алфавита

 RusDict.add("Ђ", "А"); RusDict.add("Ѓ", "Б"); RusDict.add("‚", "В");

 RusDict.add("ѓ", "Г"); RusDict.add("„", "Д"); RusDict.add("…", "Е");

 RusDict.add("р", "Ё"); RusDict.add("†", "Ж"); RusDict.add("‡", "З");

В RusDict.add("€", "Р"); RusDict.add("‰", "Р™"); RusDict.add("Р‰", "Рљ");

 RusDict.add("‹", "Л"); RusDict.add("Њ", "М"); RusDict.add("Ќ", "Н");

В RusDict.add("Р‹", "Рћ"); RusDict.add("РЏ", "Рџ"); RusDict.add("С’", "Р ");

В RusDict.add("вЂ", "РЎ"); RusDict.add("’", "Рў"); RusDict.add("“", "РЈ");

 RusDict.add("”", "Ф"); RusDict.add("•", "Х"); RusDict.add("–", "Ц");

В RusDict.add("—", "Р§"); RusDict.add("В", "РЁ"); RusDict.add("в„ў", "Р©");

 RusDict.add("љ", "Ъ"); RusDict.add("›", "Ы"); RusDict.add("њ", "Ь");

В RusDict.add("Сњ", "Р­"); RusDict.add("С›", "Р®"); RusDict.add("Сџ", "РЇ");

В RusDict.add("В ", "Р°"); RusDict.add("РЋ", "Р±"); RusDict.add("Сћ", "РІ");

В RusDict.add("Р€", "Рі"); RusDict.add("В¤", "Рґ"); RusDict.add("Тђ", "Рµ");

В RusDict.add("СЃ", "С‘"); RusDict.add("В¦", "Р¶"); RusDict.add("В§", "Р·");

В RusDict.add("РЃ", "Рё"); RusDict.add("В©", "Р№"); RusDict.add("Р„", "Рє");

В RusDict.add("В«", "Р»"); RusDict.add("В¬", "Рј"); RusDict.add("В­", "РЅ");

В RusDict.add("В®", "Рѕ"); RusDict.add("Р‡", "Рї"); RusDict.add("Р°", "СЂ");

В RusDict.add("Р±", "СЃ"); RusDict.add("РІ", "С‚"); RusDict.add("Рі", "Сѓ");

В RusDict.add("Рґ", "С„"); RusDict.add("Рµ", "С…"); RusDict.add("Р¶", "С†");

В RusDict.add("Р·", "С‡"); RusDict.add("Рё", "С€"); RusDict.add("Р№", "С‰");

В RusDict.add("Рє", "СЉ"); RusDict.add("Р»", "С‹"); RusDict.add("Рј", "СЊ");

В RusDict.add("РЅ", "СЌ"); RusDict.add("Рѕ", "СЋ"); RusDict.add("Рї", "СЏ");

}

//Функция для перевода строки из DOS- в Windows-кодировку

function DosToWin(s) {

 var i,ss;  //Объявляем переменные

 //Проверяем, создан ли объект RusDict

В if (typeof(RusDict)=="undefined")

  //Если объект RusDict не создан, создаем его

В  MakeRusDict();

В ss="";

 for (i=0;i<s.length;i++) {  //Цикл по всем символам в строке

  if (RusDict.Exists(s.charAt(i)))  //Проверяем наличие символа в словаре

   //Преобразуем i-й символ в Windows-кодировку

В В  ss+=RusDict.Item(s.charAt(i));

В  else ss+=s.charAt(i);

В }

В return ss;

}

/*************  Начало *********************************************/

//Печатаем приглашение для ввода

WScript.StdOut.Write("Введите одну строку: ");

s = WScript.StdIn.ReadLine();  //Вводим строку с клавиатуры

WScript.StdOut.WriteBlankLines(1);  //Печатаем пустую строку

WScript.StdOut.Write("Было введено: ");

//Преобразовываем введенную строку в Windows-кодировку

//и выводим ее на экран

WScript.StdOut.WriteLine(DosToWin(s));

/*************  Конец *********************************************/

Листинг 2.15. Ввод одной строки с помощью метода StdIn ReadLine (VBScript)

'*******************************************************************

' РРјСЏ: StdIn1.vbs

' Язык: VBScript

' Описание: Пример использования метода StdIn.WriteLine

'*******************************************************************

' Функция для перевода строки из DOS- в Windows-кодировку

Function DosToWin(s)

Dim i,k,ss

В ss=""

 For i=1 To Len(s)  ' Цикл по всем символам в строке

  k = Asc(Mid(s,i,1))  ' Определяем ANSI-код i-го символа

В  ' Рзменяем РєРѕРґ k РЅР° РєРѕРґ соответствующего символа РІ

В  ' Windows-РєРѕРґРёСЂРѕРІРєРµ

В  If (128 <= k) And (k <= 175) Then

В В  k=k+64

В  ElseIf (224 <= k) And (k <= 239) Then

В В  k=k+16

В  ElseIf k = 240 Then

В В  k=168

В  ElseIf k = 241 Then

В В  k=184

В  End If

  ss=ss+Chr(k)  ' Возвращаем преобразованную строку

В Next

В DosToWin=ss

End Function

'*************  Начало *********************************************

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*