Encoding
 
Задает формат символов из текстового файла

Синтаксис

Open filename for {Input|Output|Append} Encoding "utf-8"|"utf-16"|"utf-32"|"ascii" as [#]filenum

Параметры

filename for {Input|Output|Append}
имя, чтобы открыть файл для Input, Output, или Append
Encoding "utf-8"|"utf-16"|"utf-32"|"ascii"
указывает тип кодировки для файла
filenum
неиспользуемый(свободный) номер файла,  который будет ассоциирован с открытым файлом

Описание

Encoding определяет формат для текстового файла Unicode, так Winput # и Print # будут использовать правильную кодировку. Если его исключить из Open,  будет кодировка "ascii" по умолчанию.

Только прямой порядок байтов кодировки символов поддерживаются в данный момент.
    • "utf8",
    • "utf16"
    • "utf32"
    • "ascii" (по умолчанию)

Пример

'' Этот пример:
'' 1) Запишет строку в текстовый файл с кодировкой UTF-16
'' 2) Отобразит байт содержимое файла
'' 3) Прочитает текст обратно из файла
''
'' WSTRING будет работать также, но String
'' в данном примере используется так как не все консоли поддерживают
'' печать WSTRING.

'' Имя файла для использования в этом примере
Dim f As String
f = "sample.txt"

''
Scope
  Dim s As String
  s = "FreeBASIC"

  Print "Text to write to " + f + ":"
  Print s
  Print

  '' открываем файл для вывода с использованием кодировки UTF-16
  '' и печатаем краткое сообщение
  Open f For Output Encoding "utf-16" As #1

  '' ASCII строка преобразуется в UTF-16
  Print #1, s
  Close #1
End Scope

''
Scope
  Dim s As String, n As Integer

  '' откроем тот же файл для двоичного вывода и прочитаем все байты
  Open f For Binary As #1
  n = LOF(1)
  s = Space( n )
  Get #1,,s
  Close #1
  
  Print "Binary contents of " + f + ":"
  For i As Integer = 1 To n
    Print Hex( Asc( Mid( s, i, 1 )), 2); " ";
  Next
  Print
  Print

End Scope

''
Scope
  Dim s As String
  
  '' откроем файл для ввода с использованием кодировки UTF-16
  '' и считаем сообщение
  Open f For Input Encoding "utf-16" As #1

  '' ASCII строка преобразуется из UTF-16
  Line Input #1, s
  Close #1

  '' Отображение текста
  Print "Text read from " + f + ":"
  Print s
  Print
End Scope

Вывод:
Текст, записанный в sample.txt:
FreeBASIC

Бинарное содержимое sample.txt:
FF FE 46 00 72 00 65 00 65 00 42 00 41 00 53 00 49 00 43 00 0D 00 0A 00 

Текст , прочитанный из sample.txt:
FreeBASIC

Различия платформ

  • Unicode (W)STRING не поддерживаются в DOS FreeBASIC

Различия диалектов

  • Не доступно в диалекте -lang qb , но есть псевдоним __Encoding.

Отличия от QB

  • В QB не было никакой поддержки Unicode

См. также