Wstawienie tekstu PL do pliku RTF

0

Witam.
Chcę w pliku RTF podstawić tekst z polskimi znakami.

Ale w pliku wynikowym wynik.rtf zamiast

ĄŚŻŹąśżźćłó

mamĄŚŻŹąśżźćłó

Jak pozbyć się tych robali?

Co zmienić w poniższym kodzie ?
Dzięki za pomoc

<code class="c#">protected void btnWstaw_Click(object sender, EventArgs e)
{
    string jakisStringPL = "ĄŚŻŹąśżźćłó";

    // --- tu powinno przekodować z UTF-8 na Windows-1250
    Encoding w = Encoding.GetEncoding("Windows-1250");
    Encoding utf8 = Encoding.UTF8;

    byte[] utfBytes = utf8.GetBytes(jakisStringPL);
    byte[] wBytes = Encoding.Convert(utf8, w, utfBytes);
    string przekodowanyStringPL = w.GetString(wBytes);
    // --- 

    StreamWriter notesik;
    notesik = File.CreateText("c:\\wynik.rtf");
    if (FileUpload1.HasFile)
    {
        Stream stream = FileUpload1.FileContent;
        StreamReader reader = new StreamReader(stream);
        string strLine = "";
        StringBuilder str = new StringBuilder();
        do
        {
            strLine = reader.ReadLine();
            str.Replace("AAAAA", przekodowanyStringPL);
            str.Append(strLine);
        } while (strLine != null);
        notesik.WriteLine(str);
        notesik.Close();
    }

Kodowanie w VS2010Pro jest domyślne czyli (?) UTF-8, a w pliku RTF chyba Windows-1250 (Win7Pro PL, Word 2003).

1

Wypadałoby jeszcze zapisać plik z odpowiednim kodowaniem. Zamiast:

notesik = File.CreateText("c:\\wynik.rtf");

Zrób np. tak:

notesik = new StreamWriter(@"c:\wynik.rtf", Encoding.UTF8);

I zamiast zamykać strumień przez Close używaj ich w klauzuli using.

0

Działa już na txt, ale w pliku wynikowym NIE TRZYMA linii (zamiast np. 3 linijek wszystko jest w jednej).

JAK TO POPRAWIĆ ? Już OK (strBui.AppendLine(line));

protected void btnWriteTxt2_Click(object sender, EventArgs e)
{
    StringBuilder strBui = new StringBuilder();
    using (StreamReader sr = new StreamReader(@"c:\\a\\plik_we.txt", Encoding.GetEncoding(1250)))
    {
        string line = "";
        while ((line = sr.ReadLine()) != null)
        {
            strBui.AppendLine(line);
            strBui.Replace("AAAAA", "BBBĄŚBBB");
        }
    }
    using (StreamWriter sw = new StreamWriter(@"c:\\a\\plik_wy2.txt", false, Encoding.GetEncoding(1250)))
    {
        sw.WriteLine(strBui);
    }
}

dzięki dla somekind i ktosia za wsparcie

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