generowanie HTML w C#

0

Witam.
Mam taki oto problem: napisalem sobie program tworzacy wydruki w HTML. Dzala to pokrotce tak, ze mam zrodlowy plik HTML, wczytuje go do stringa - ten string formatuje a nastenie zapisuje go do nowego pliku HTML. Wszystko jest OK, poza polskimi czcionkami.
Zasada dzialania jest bardzo prosta - powiedzmy mamy plik html z jakims tam tekstem i podpisem osoby wykonujacej wydruk na dole. Wtedy w pliku zrodlowym mam fraze "Osoba drukujÄÂĂÂca: nazwa osoby drukujacej.
Program wczytuje caly plik do stringa a nastepnie funkcja:
myString = myString.Replace(nazwa osoby drukujacej, "Jurek Owsiak");
podmienia co i jak trzeba.
Jak widac wiec, caly opis HTML powinien pozostawac niezmieniony... Niestety cos sie zmienia i chodzi tu o polskie czcionki:

TAK WYGLADA PLIK ZRODLOWY:

<!DOCTYPE html PUBLIC "-*W3C*DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=ISO-8859-2" http-equiv="content-type"> <title></title> </head> <body>
<big style="font-weight: bold;"> Karta archiwalna pracy</big>


Numer : [[numer_osoby]]
Imię : [[imie_osoby]]

A TAK WYGLADA PLIK WYNIKOWY:

<!DOCTYPE html PUBLIC "-*W3C*DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=ISO-8859-2" http-equiv="content-type"> <title></title> </head> <body>
<big style="font-weight: bold;"> Karta pracy</big>


Numer : 144
Imiďż˝ : Janek

Prosze zwrocic uwage, ze zmieniĂĹĄĂÂ sie wyglad frazy IMIÄÂĂÂ:

Najpierw wyglada tak:

Imię :

a po przepisaniu tak:

Imiďż˝ :

Tak jak pisalem - nie odbywa sie tu zadna zamiana programowa - po prostu odczytaj z pliku, zapisz do stringa, zapisz ze stringa do pliku.

I NIE MAM zielonego pojecia dlaczego tak sie dzieje.

Macie moze jakies pomysly?

1

File.ReadAllText("aaa", Encoding.GetEncoding("iso-8859-2"));

0

Noo juz lepiej.
Do tej pory mialem tak, ze nie mialem zadnych polskich czcionek.
Teraz po zastosowaniu tej instrukcji sa juz polskie czcionki we frazach podmienianych w programie. Niestety cialo niepodmieniane wciaz nie ma polskich znakow.
Teraz w pliku wynikowym mam tak:

Numer : 9
Imi? : Sławomir
Nazwisko : KĄTNY

czyli poprawnie podmienia (Sławomir, Kątny) - zle pozostaje to co nie jest zmieniane.

Moze jeszcze cos trzeba zmienic w momencie wczytywania?
public static void FOpenFile()
{
using (StreamReader myFile = new StreamReader(old_filename))
myString = myFile.ReadToEnd();

    }
1

Ten kod, który ci dałem właśnie wczytuje plik. Musisz i wczytać plik z takim kodowaniem i z takim go zapisać.

myString = File.ReadAllText(old_filename, Encoding.GetEncoding("iso-8859-2"));
Albo dodaj to kodowanie w konstruktorze StreamReader.

0

DZIEKI !

Rozroznianie kodowania podczas zapisu i odczytu rozwiazuje sprawe:

    public static void FOpenFile()
    {
        using (StreamReader myFile = new StreamReader(old_filename, Encoding.GetEncoding("iso-8859-2")))
            myString = myFile.ReadToEnd();

    }

    public static void FCloseFile()
    {
        File.WriteAllText(new_filename, myString, Encoding.GetEncoding("iso-8859-2"));
    }
0

Jasne, że rozwiązuje, bo C# domyślnie działa na unicode.

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