Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem naših slova

[es] :: C/C++ programiranje :: Problem naših slova

[ Pregleda: 2252 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
*.crnagora.net.

Sajt: www.azalea-maritime.com


Profil

icon Problem naših slova15.02.2005. u 09:17 - pre 233 meseci
Pozdrav narode!

Evo jednog MFC VC++ početničkog pitanja:

Imam UTF8 tekstualni fajl, koji parsiram i sadržaj pišem u HTML fajl. Nažalost, ukoliko se u input-fajlu pronađe neki simbol tipa ščćž, u output-u se pojavljuju čudni znakovi iz asci koda.

Evo mog primjera:

Code:

CStdioFile cf;
if(cf.Open("c:\\temp\\fajl.xml", CFile::modeRead))
{
    int nFileLength = cf.GetLength();
    char *lpBuffer = new char[nFileLength+1];
    try
    {
        cf.Read(lpBuffer, nFileLength);
    } 
    catch (CFileException *e) 
    {
        e->Delete();
        delete [] lpBuffer;
    }
    lpBuffer[nFileLength] = 0;
    CString sadrzaj;
    
    sadrzaj = lpBuffer;
    delete [] lpBuffer;
    cout << (LPCTSTR)sadrzaj << endl;
}


Ukoliko fajl.xml sadržaj izgleda ovako: "cvrči cvrči čvorak...", izlaz izgleda ovako: "cvr─Źi cvr─Źi ─Źvorak..."


Kako da prevaziđem problem?

Đorđe
+++[code][code]
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
66.228.70.*



+6 Profil

icon Re: Problem naših slova15.02.2005. u 15:50 - pre 233 meseci
To je zato što čitaš UTF-8 tekst kao da je ASCII. U principu, treba da odradiš sledeće:

1. Otvoriš fajl u binarnom modu i učitaš sadržaj u niz bajtova (najbolje je da koristiš std::vector).

2. Uz pomoć funkcije MultiByteToWideChar konvertuješ tako učitan tekst u UTF16 i smestiš ga u npr wstring.

3. Parsiraš ili već šta hoćeš da radiš sa tim tekstom.

4. Konvertuješ rezultat u UTF-8 tekst kao niz bajtova pomoću funkcije WideCharToMultiByte

5. Zapišeš rezultat u novi fajl (binarno).
 
Odgovor na temu

sspasic
Sasa Spasic

Član broj: 3261
Poruke: 175
*.49.EUnet.yu.

Jabber: sspasic@elitesecurity.org
ICQ: 35454521


Profil

icon Re: Problem naših slova15.02.2005. u 17:14 - pre 233 meseci
Svakako uradi na način kako kaže Dragi Tata, zbog jednostavnijeg parsiranja kada karakteri imaju jednaku veličinu, ali mislim da ti ovde problem pravi to što na cout šalješ UTF-8 tekst a Command Prompt prozor očekuje ASCII.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Problem naših slova

[ Pregleda: 2252 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.