Przetwarzanie plików z kodwaniem Mazovia, problem z konwersją.

0

Cześć wszystkim, od wczoraj borykam się z jednym problemem, mianowicie: Mam plik w formacie DBF z kodowaniem Mazovia, plik muszę przekonwertować na inny format
ale przed tym muszę zmienić kodowanie tak aby tekst nie zawierał krzaków i innych dziwnych znaków. Do zmienienia kodowania użyłem klasy MazoviaEncoding którą zamieścił jeden z użytkowników stackoverflow. Na pierwszy rzut oka wszystkie znaki zostają dobrze podmienione oprócz "Ł" oraz "Ś" te znaki występują pod postacią "Ó". Czy ktoś z was miał podobny przypadek? Czym to może być spowodowane ?

Tutaj temat ze stacka: https://stackoverflow.com/questions/13655614/unicode-to-mazovia-encoding-redundant-char

Do pobrania danych z Dbf'a używam : https://github.com/eXavera/NDbfReader

Tak pobieram dane i konwertuje, po czym zapisuje plik:

Encoding encoding = new MazoviaEncoding();
            
            using (DbfTable table = DbfTable.Open(path,encoding))
            {             
                FetchDataFromDbf(ref DbfListName, table, 33);

               
            }
 File.WriteAllLines("Test.txt", DbfListName,encoding);


Metoda "FetchDataFromDbf":

public static void FetchDataFromDbf(ref List<string> StringList, DbfTable table, int columnIndex)
        {
            foreach (DbfRow row in table)
            {
                StringList.Add(row.GetString(table.columns[columnIndex]));
            }
        }
0

Up

0

A tak skopiowałeś beznamiętnie kod ze Stacka, czy sprawdziłeś jego poprawność? Ta tablica znaków jest dobrze zdefiniowana? Działa na gołym stringu (czy tam gołej tablicy bajtów)?

0

Tablica się zgadza, jeśli to coś zmieni to kiedy używam kodowania


Encoding.GetEncoding(1250)

Dzieje się to samo, "Ó" występuje jako "Ł" i "ś".

0

Skoro działa na gołym stringu, to trzeba się upewnić, że plik DBF ma dobre kodowanie i jest poprawnie odczytywany przez NDbfReader. Hexedytor w dłoń i sprawdzasz plik, następnie wczytujesz dane, zrzucasz na dysk jako gołe bajty i sprawdzasz, czy jest to, co trzeba.

1 użytkowników online, w tym zalogowanych: 0, gości: 1