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?
string[] readedText = File.ReadAllLines(path, Encoding.UTF8);
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);
}
Jest w .net core ta metoda
https://github.com/dotnet/corefx/blob/master/src/System.IO.FileSystem/src/System/IO/File.cs#L440
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ć? :(
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!