Резултати от 1 до 3 от общо 3

ReadFields не чете кирилица на някои компютри

Сподели във Facebook Сподели в Twitter Изпрати на Email Сподели в LinkedIn
  1. Member
    Тук е от
    Nov 2005
    Мнения
    295
    #1

    ReadFields не чете кирилица на някои компютри

    Имам следния проблем:
    Едно програмче на VB 2005 трябва да чете данни от файл. Направил съм го по следния начин:
    Код:
    Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(txtFileName.Text)
     MyReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
     MyReader.SetFieldWidths(nmrBegin.Value, nmrLength.Value, -1)
    
     Dim currentRow As String()
    
     While Not MyReader.EndOfData
      currentRow = MyReader.ReadFields() // Ето тук е проблемът!!!
     End While
    
    End Using
    Файлът съдържа както латиница и цифри, така и ДОС кирилица и е с фиксирани по дължина полета.
    На някои компютри кирилицата се чете (визуализира се като квадратчета, но се прочита), а на други все едно въобще не съществува във файла и се получава изместване на полетата.

    Опитах да му наложа експлицитно култура "bg-BG", но не помогна.
    На двата компютъра (такъв, който чете кирилицата и такъв, който я пропуска) регионалните настройки в контрол панела са абсолютно еднакви. И на двете места е инсталиран .NET 2.0

    Някой има ли някакви идеи?

  2.  
     
  3. Member Аватара на shanto
    Тук е от
    Feb 2008
    Мнения
    621
    #2

    Re:ReadFields не чете кирилица на някои компютри

    Опитай се да конвертираш DOS кирилицата във Unicode.

    Мисля, че кодовата таблица за кирилицата под DOS беше 866.

    Мисля,че трябва да използваш Encoding.GetEncoding.
    Виж това:

    Код:
    Imports System.Text
    
    Dim cyrillic As Encoding = Encoding.GetEncoding(866)
    
    Given an array of Bytes with DOS Cyrillic in it, you would use
    Encoding.GetString to convert to a Unicode String.
    
    Dim bytes() As Byte
    Dim s As String = cyrillic.GetString(bytes)
    
    Given a Unicode String, you would us Encoding.GetBytes to get an array of
    Bytes with DOS cyrillic.
    
    bytes = cyrillic.GetBytes(s)
    
    If your DOS cyrillic is in a Text File you pass the Encoding object to your
    System.IO reader & writer classes
    
    Dim input As New StreamReader("myCyrillic.txt", cyrillic)
    
    Dim output As New StreamWriter("myCyrillic.txt", False, cyrillic)
    За повече информация погледни тук

    http://www.yoda.arachsys.com/csharp/unicode.html


  4. Member
    Тук е от
    Nov 2005
    Мнения
    295
    #3

    Re:ReadFields не чете кирилица на някои компютри



    Това му бил проблемът!
    А защо без зададен енкодинг на едни машини работи, а на други не? Microsoft-ска работа

Сподели във Facebook Сподели в Google Plus Сподели в Twitter Изпрати на Email Сподели в LinkedIn

Подобни теми

  1. Отговори: 0
    Последно: 07-10-08, 17:54
  2. Продавам компютри и някои компоненти...
    От vampirebg във форум Продава
    Отговори: 8
    Последно: 29-08-07, 12:59
  3. NEC 4551 не чете някои матрични DVD-та
    От cashregister във форум Общ - хардуер
    Отговори: 2
    Последно: 08-12-06, 11:17
  4. Как се чете хистограма?
    От zerow във форум Телевизори
    Отговори: 2
    Последно: 23-01-06, 15:26
  5. Отговори: 4
    Последно: 01-12-05, 19:42

SetCombG.com
SetCombG.com е портален сайт и Форум за битова техника, телевизори, климатици, лаптопи и смартфони, създаден през 1999 година.
Заедно сме над 20 години!
Следвай ни
Горе