Kodowanie tekstu w C

0

Pobrałem stronę HTML, obrobiłem ją funkcjami do stringów i zapisałem w pliku tekstowym.
Notepad++ pokazuje, że plik jest kodowany w UTF-8 bez BOM, a sam plik wygląda przyzwoicie jeśli chodzi o kodowanie znaków.
Problem zaczyna się gdy próbuję wyświetlić jego zawartość. W konsoli dostaję coś takiego:

Vincent chce nad morze (2010)
W imi─Ö... (2013)
W kr─Ögu mi┼éo┼Ťci (2012)
Wałęsa. Człowiek z nadziei (2013)
We mgle (2012)
Wieczni chłopcy (2013)
Wielkie nadzieje (2012)
Wi─Öcej ni┼╝ miod (2012)
Wy┼Ťcig (2013)
Z mi┼éo┼Ťci do... (2012)
Ślepy traf (2013)
Śmierć człowieka na Bałkanach (2012)
┼╗ycie Adeli – Rozdzia┼é 1 i 2 (2013)
┼╗ywie Bie┼éaru┼Ť! (2012)

Załóżmy, że chcę przechowywać i wyświetlić ten tekst bez ogonków, czyli litery Ż jako Z, ą jako a, itd.

Co mogę zrobić by to osiągnąć?

Edit:
Napisałem taki programik:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char ch;
    FILE *f = fopen("test.txt","rb");
    while(!feof(f))
    {
        ch=fgetc(f);
        printf("%c : %#x\n",ch,ch);
    }
    fclose(f);
    return 0;
}

Zawartość test.txt to:

ąćęłńóśżź

Po uruchomieniu konsola wypisuje:

─ : 0xffffffc4
ů : 0xffffff85
─ : 0xffffffc4
ç : 0xffffff87
─ : 0xffffffc4
Ö : 0xffffff99
┼ : 0xffffffc5
é : 0xffffff82
┼ : 0xffffffc5
ä : 0xffffff84
├ : 0xffffffc3
│ : 0xffffffb3
┼ : 0xffffffc5
Ť : 0xffffff9b
┼ : 0xffffffc5
╝ : 0xffffffbc
┼ : 0xffffffc5
║ : 0xffffffba
  : 0xffffffff

Każda z liter w test.txt jest reprezentowana przez dwa znaki takie jak powyższe. Czy znaczy to, że jedynym rozwiązaniem jest wykrywanie takich par i zastępowanie ich odpowiednimi literami?

0

Należy zdekodować UTF-8 do UTF-16, a następnie wyświetlić za pomocą wprintf.
Przyda się też ustawić prawidłowo setlocale.
Nie podałeś jaki masz kompilator, ale Visual Studio lepiej sobie radzi z unikodem niż MinGW.

Czy znaczy to, że jedynym rozwiązaniem jest wykrywanie takich par i zastępowanie ich odpowiednimi literami?
Absolutnie nie. Do kodowań znaków należy podchodzić całościowo, a nie tylko przekształcić same polskie litery i uważać że tak jest dobrze.

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