Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB_REF_7.pdf
Скачиваний:
25
Добавлен:
13.02.2015
Размер:
2.96 Mб
Скачать

Предложение CharSet

Предложение CharSet

значение:

Определяет набор кодов, используемый в MapBasic для интерпретирования символов.

Синтаксис:

CharSet char_set

где

char_set – строковая величина, содержащая имя кода, например, "ANSI".

Описание:

Предложение CharSet используется для перекодировки символов в операциях чтения из файла или записи в файл или таблицы. Предложение не является самостоятельным оператором и входит в состав таких операторов, работающих с файлами, как Export и Open File.

Для чего нужна система кодов?

Каждому символу клавиатуры соответствует свой численный код. Например, буква латинского алфавита “A” имеет код 65. Системой кодов называют набор соответствий кодов символам, используемый компьютером для представления этих символов в текстовых данных.

Существуют несколько систем кодов, используемых в разных операционных системах. Например, Windows версии для Северной Америки и Западной Европы использует код 176 для представления знака градуса (°), тогда как Windows другой языковой версии может использовать этод код для другого символа. Тем более различаются системы кодов в операционных системах разных компьютерных платформ. Знак градуса в системе Macintosh имеет код 161.

Большинство программ DOS используют расширенную систему кодов ASCII для представления символов. В среде Windows используется ANSI-стандарт. Одним из следствий существования нескольких наборов символов является необходимость перекодировки данных при переносе их с одной вычислительной платформы на другую.

Для определения системы кодов символов используйте вызов функции System Info(SYS_INFO_CHARSET).

Как кодировка символов влияет на программу MapBasic?

В большинстве кодировок часть символов представлена одинаковыми числами, например, символ английской буквы A имеет один и тот же код 65 в средах Windows, UNIX и Macintosh. Начиная с 126 символа размещаются символы различных языков.

Если Ваш файл включает текст, в котором используются символы, имеющие коды от 32 (пробел) до 126 (тильда), то Вам не надо беспокоиться о конфликтах, которые могут произойти из-за некорректности перевода данных.

Даже если Вы использовали символы из интернациональной клавиатуры, но не выходите за пределы своей операционной среды (например, Вы работаете только в Windows), то тоже нет причин для беспокойства.

Однако, если файл включает интернациональные символы и Вы хотите его перенести в другую операционную среду, которая использует другую кодировку, Вам не обойтись без предложения CharSet для сохранения целостности Ваших данных.

Справочник MapBasic

67

Предложение CharSet

Например, приложение MapBasic, выполняющееся в MapInfo для Windows, может использовать операторы Open File и Line Input для открытия файла и чтения из него текста. Если этот текстовый файл был создан в операционной среде Macintosh, то оператору Open File... For Input необходимо иметь предложение CharSet для того, чтобы текст был правильно прочитан:

Open File "cogo23.txt" For INPUT As #2 CharSet "MacRoman"

Аналогично, если программа записывает в этот файл, оператор Open File... For Output должен иметь такое же предложение CharSet, чтобы текстовый файл можно было прочитать в Macintosh.

Предложение CharSet имеет только один строковый параметр, возможные значения которого приведены в следующей таблице:

Character Set

Комментарии

"Neutral"

нет преобразования кодов

"ISO8859_1"

ISO 8859-1 (Unix)

"ISO8859_2"

ISO 8859-2 (Unix)

"ISO8859_3"

ISO 8859-3 (Unix)

"ISO8859_4"

ISO 8859-4 (Unix)

"ISO8859_5"

ISO 8859-5 (Unix)

"ISO8859_6"

ISO 8859-6 (Unix)

"ISO8859_7"

ISO 8859-7 (Unix)

"ISO8859_8"

ISO 8859-8 (Unix)

"ISO8859_9"

ISO 8859-9 (Unix)

"PackedEUCJapanese"

Unix, японский стандарт

"WindowsLatin1"

Windows, стандарт США и Западной Европы

"WindowsLatin2"

Windows, стандарт Восточной Европы

"WindowsArabic"

Windows, стандарт арабских языков

"WindowsCyrillic"

Windows, стандарт русского языка

"WindowsGreek"

Windows, стандарт греческого языка

"WindowsHebrew"

Windows, стандарт иврита

"WindowsTurkish"

Windows, стандарт турецкого языка

"WindowsTradChinese"

Windows, стандарт традиционный китайский

"WindowsSimpChinese"

Windows, стандарт упрощенный китайский

"WindowsJapanese"

Windows, стандарт японского языка

"WindowsKorean"

Windows, стандарт корейского языка

68

Справочник MapBasic

 

Предложение CharSet

 

 

"MacRoman"

Macintosh, стандарт США и Западной Европы

"MacArabic"

Macintosh арабский

"MacGreek"

Macintosh греческий

"MacHebrew"

Macintosh-иврит

"MacCentralEuropean"

Macintosh для Центральной Европы

"MacCroatian"

Macintosh для Хорватии

"MacCyrillic"

Macintosh русский

"MacIcelandic"

Macintosh исландский

"MacThai"

Macintosh таиландский

"MacTurkish"

Macintosh турецкий

"MacTradChinese"

Macintosh китайский традиционный

"MacSimpChinese"

Macintosh китайский упрощенный

"MacJapanese"

Macintosh японский

"MacKorean"

Macintosh корейский

"CodePage437"

DOS Code Page 437 = расширенная кодировка ASCII для IBM

"CodePage850"

DOS Code Page 850 = многоязычная

"CodePage852"

DOS Code Page 852 = Восточная Европа

"CodePage855"

DOS Code Page 855 = Кириллица

"CodePage857"

 

"CodePage860"

DOS Code Page 860 = Португальская

"CodePage861"

DOS Code Page 861 = Исландская

"CodePage863"

DOS Code Page 863 = Французско-Канадская

"CodePage864"

DOS Code Page 864 = Арабская

"CodePage865"

DOS Code Page 865 = Норвежская

"CodePage869"

DOS Code Page 869 = Современная Греческая

"LICS"

Кодировка Lotus версии 1,2

"LMBCS"

Кодировка Lotus версии 3,4

Заметим, что в операторе Open Table нет необходимости использовать предложение CharSet, так как файл таблицы содержит информацию о той системе, где она была создана и MapInfo автоматически подбирает необходимую кодировку для перевода.

Предложение CharSet может понадобиться в операторе Commit Table... As, если Вы хотите

Справочник MapBasic

69

Предложение CharSet

сохранить данные в таблице в определенной кодировке.

Синтаксис предложения в языке MapBasic версии 2.x

MapBasic версии 2.x располагает только тремя именами систем кодов: "XASCII", "ANSI" и "MAC". Тексты программ, написанные во времена этой версии, и которые используют эти имена систем кодов, могут быть откомпилированы и запущены в MapBasic версии 3.0. Однако, использовать имена систем кодов из версии 2.x не рекомендуется:

Предложение CharSet "XASCII" соответствует предложению CharSet "CodePage437".

Предложение CharSet "MAC" соответствует предложению CharSet "MacRoman".

Если Вы работаете в Windows, то предложение CharSet "ANSI" задает кодировку, которая используется в Windows. Если программа запускается в UNIX или Macintosh, то CharSet "ANSI" задает такую же кодировку, как предложение CharSet "WindowsLatin1".

Пример:

Текстовый файл PARCEL.TXT был создан в DOS, поэтому в следующем примере используется код "CodePage437".

Open File "parcel.txt"

For INPUT As #1

CharSet "CodePage437"

Смотрите также:

Commit Table, Create Table, Export, Open File, Register Table

70

Справочник MapBasic

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]