Команды SFK


    1        2        3        4        5        6        7        8        9        10    

Раздел 10. Help - Помощь
help chain | help chars | help colors | help compile | help nocase | help office | help options | help patterns | help select | help shell | help unicode | help var | samp |

Help:   Рус   |   Eng        

Команда: help chars
символы и кодовые страницы с SFK для Windows:

   SFK использует 8-битные коды символов с возможным
   диапазон из 255 различных символов. см.: sfk ascii

   коды символов 32-126 или шестнадцатеричные 0x20-0x7E,
   являются 7-битными символами ASCII. в СФК они
   называемые «Низкие коды» или LoCodes. до тех пор, как вы
   используйте только az AZ 0-9 !"#$%&_ и т. д. вы используете LoCodes,
   который будет работать одинаково на каждом компьютере в
   world, и вы можете игнорировать кодовые страницы.
 
   но как только вы захотите использовать акцентные символы,
   умлауты, кириллица, греческий и т. д. вам нужны HiCodes
   в диапазоне 0x80-0xFF. они зависят от
   кодовые страницы вашей системы Windows, и вы можете только
   используйте символы вашего родного языка, а также английский.

   ваша командная строка Windows CMD.EXE использует две кодовые страницы:

   1. Кодовая страница ANSI 1251 для обработки данных.
      каждый текст внутри SFK кодируется этой кодовой страницей.
      Большинство текстовых редакторов, таких как Блокнот,
      используйте эту кодовую страницу по умолчанию.
 
   2. Кодовая страница Dos/OEM 866 для ввода и отображения.
      то, что вы печатаете на клавиатуре, закодировано в 866.
      терминал CMD.EXE может отображать HiCodes только в
      эта кодовая страница правильно.

   Преобразование HiCode шаг за шагом:

   - когда вы запускаете sfk и передаете параметры, это
      преобразован из OEM в Ansi, а затем передан в sfk.
      поэтому sfk получает только параметры в кодировке Ansi.

   - внутри SFK вся обработка данных осуществляется с помощью Ansi,
      например filter ... +xed ... будет передавать текст Ansi.

   - при выводе текста на терминал SFK преобразует его
      от Ansi до OEM для вывода. иначе HiCodes
      все будет выглядеть неправильно, так как терминалу нужен OEM.

   - при записи вывода текста в файл, например
         фильтр ... >out.txt
         фильтр ... +tofile out.txt
      пишется как Ansi, без преобразования.
      затем вы можете открыть файл out.txt с помощью Блокнота
      или Depeche View, которые ожидают текст Ansi,
      и HiChars будут отображаться правильно.

   Остерегайтесь HiCodes в пакетных файлах.
 
   - если вы запускаете SFK в интерактивном режиме, например:
         фильтр sfk в .txt --+myword
      а myword содержит HiCodes, вы их вводите
      все как OEM символы, и это работает.
 
   - если вы создаете пакетный файл с помощью Блокнота Windows,
      и там тип
         фильтр sfk в .txt --+myword
      и myword содержит HiCodes, вы обнаружите, что
      фильтр больше не находит слово.
      Поскольку Блокнот создал текстовый файл в кодировке Ansi,
      поэтому символы «myword» кодируются Ansi.

      что случается?
      - CMD.EXE по-прежнему считает, что "myword" является OEM,
         и неправильно "конвертирует" его в Ansi,
         что фактически разбивает все символы HiCode.
      - sfk.exe затем получает мое слово полностью
         неверная кодировка, и поиск не работает.

      как это исправить:
      - записывайте свои файлы .bat в кодировке OEM.
         это можно сделать с помощью Notepad++:
         - создайте новый файл mytest.bat
         - выберите: Кодировка/Набор символов/ваша область,
            затем выберите кодовую страницу OEM.
         - теперь введите команды sfk в командный файл,
            и сохранить его.
      - побочный эффект: если вы создаете скрипты sfk
         встроенный в такой пакетный файл, например:
            пакет sfk mytest2.bat
         поиск в нем снова не удастся, если это
         кодируется OEM. потому что по умолчанию "скрипт sfk"
         хочет загрузить текст Ansi. исправить это использование
         опция -dos как: скрипт sfk -dos ...

   Что невозможно?
 
   SFK не может обрабатывать текст за пределами вашей кодовой страницы Ansi.

   например, если компьютер использует Западную Европу
   кодовая страница 1252, можно искать немецкие умлауты
   и некоторые символы с французским акцентом. но это невозможно
   для поиска и фильтрации кириллического текста (в кодировке 1251),
   и даже кириллические символы набирать будет невозможно
   во-первых, потому что на клавиатуре таких клавиш нет.

   смотрите также:
      sfk help nocase о поиске без учета регистра
      sfk help unicode Преобразование юникода в Ansi