Zmiana kodowania znaków w asp.net core

Odpowiedz Nowy wątek
2019-01-06 07:42
0

Cześć,
pobieram od użytkownika plik tekstowy, żeby go później przerobić i zwrócić użytkownikowi. Plik może mieć jednak różne kodowanie.
Chciałem się zapytać w jaki sposób mogę odczytać ten plik zmieniając jego kodowanie na UTF-8?

Pozostało 580 znaków

2019-01-06 10:41
0
string[] readedText = File.ReadAllLines(path, Encoding.UTF8);
edytowany 1x, ostatnio: error91, 2019-01-06 10:41

Pozostało 580 znaków

2019-01-06 16:41
0

Zdaje się, że File.ReadAllLines w asp.net core nie jest dostępny(?). U mnie jest zrobione tak jak poniżej, ale ciągle, gdy mam pliki zapisane z kodowaniem windows 1250 lub ASCI etc. to mam krzaczki zamiast polskich znaków :(


            FileStream fileStream = new FileStream(full_path, FileMode.Open);
            using (StreamReader reader = new StreamReader(fileStream, Encoding.UTF8))
                {
                while(!reader.EndOfStream)
                    {
                    line += reader.ReadLine() + Environment.NewLine;
                    }
                }

            full_path = Path.Combine(path, "test.txt");

            using (System.IO.StreamWriter writer = new System.IO.StreamWriter(System.IO.File.Create(full_path), Encoding.UTF8))
                {
                writer.WriteLine(line);
                }
edytowany 1x, ostatnio: Kofcio, 2019-01-06 16:42

Pozostało 580 znaków

2019-01-06 17:11
0

Jest w .net core ta metoda
https://github.com/dotnet/cor[...]em/src/System/IO/File.cs#L440

Pozostało 580 znaków

2019-01-06 19:58
0

Faktycznie, jest ta metoda, ale kolidowała z inną klasą. Niestety zastosowanie tej funkcji nie rozwiązało problemu - w dalszym ciągu pliki z kodowaniem np. windows1250 po ich odczytaniu i zapisaniu do nowego pliku mają krzaczki :(
Co ważne, oryginalny plik tych krzaczków nie ma... W sensie oryginał jest ok, ale jak go ponownie otworzę i zapiszę kopię to krzaczki już są...

Obecnie kod wygląda tak:

            var full_path = Path.Combine(path, "oryginal_" + file.FileName);

            using (var stream = new FileStream(full_path, FileMode.Create))
            {
                await file.CopyToAsync(stream);
            }

            string fileContent = System.IO.File.ReadAllText(full_path, Encoding.UTF8);
            full_path = Path.Combine(path, "copy_" + file.FileName);
            System.IO.File.WriteAllText(full_path, fileContent, Encoding.UTF8);

Jakieś pomysły jak to można rozwiązać? :(

Pozostało 580 znaków

2019-01-07 02:02
0

Oki Doky, z tego co udało mi się ustalić jedyna sensowna opcja na zmianę kodowania to: System.Text.Encoding.CodePages
Niestety w necie jakoś niewiele jest informacji o tym czymś... Nie mogę znaleźć niczego sensownego :(.
Czy byłby ktoś tak miły i pokazał na przykładzie jak należy to wykorzystać, żeby przerobić dane z pliku na stringa tak, by po jego zapisaniu do kolejnego pliku były polskie znaki? Będę ogromnie zobowiązany!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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