Запись в файл с кодировкой ISO-8859-1 - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть vb6 код, который упорно писать в Windows-1252.

  Open fileName For Binary Access Write As #fileNo
  Put #fileNo, , contents
  Close #fileNo

Мне удалось сделать это для записи в UTF-16 (LE), сделав это;

contents = ChrW$(&HFEFF&) & contents

Есть ли какой-нибудь способ, которым я мог бы легко написать его в ISO-8859-1? Примеры / предложения будут с благодарностью здесь.

Ответы [ 3 ]

4 голосов
/ 01 декабря 2011

Если ваши файлы не очень большие, ADO может прийти на помощь для быстрой и грязной обработки нечетных кодировок.

Пример:

Option Explicit

Private Sub Main()
    Const contents As String = "Hello World.  (4 × 6) ÷ 8 = 3 €€€ ƒƒƒ"
    Dim Stm As ADODB.Stream

    Set Stm = New ADODB.Stream
    With Stm
        .Open
        .Type = adTypeText
        .Charset = "iso-8859-1"
        .LineSeparator = adLF
        .WriteText contents, adWriteLine
        .SaveToFile "ISO-8859-1.txt", adSaveCreateOverWrite
        .Close

        .Open
        .Type = adTypeText
        .Charset = "windows-1252"
        .LineSeparator = adCRLF
        .WriteText contents, adWriteLine
        .SaveToFile "Windows-1252.txt", adSaveCreateOverWrite
        .Close
    End With
    MsgBox "Done"
End Sub
2 голосов
/ 30 ноября 2011

Вывод символов VB6 кодируется в машинной кодовой странице по умолчанию для программ, не поддерживающих Юникод.

  • Если вам удастся установить для машинной кодовой страницы значение 28591, то есть код Windowsстраницы для iso-8859-1 , тогда вы можете быть абсолютно уверены, что ваш вывод будет iso-8859-1
  • В качестве альтернативы просто избегайте символов, где Windows 1252 отличается от ISO-8859-1.В Википедии написано, что это 128 - 159. Вы можете обнаружить их и заменить на вопросительные знаки или выдать ошибку.
2 голосов
/ 30 ноября 2011

Windows-1252 - это расширенный набор ISO-8859-1; просто запишите свои данные как Windows-1522 и не используйте символы Windows-1252, которые также не являются символами ISO-8859-1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...