Trying to read wide char gives EOF

Viewed 487

I've got a text file, foo.txt, with these contents:

R⁸2

I had a large program reading it and doing things with each character, but it always received EOF when it hit the . Here's the relevant portions of the code:

setlocale(LC_ALL,"");

FILE *in = fopen(argv[1],"r");

while (1) {
    wint_t c = getwc(in);
    printf("%d ",wctob(c));

    if (c == -1)
        printf("Error %d: %s\n",errno,strerror(errno));

    if (c == WEOF)
        return 0;
}

It prints 82 -1 (the ASCII codes for R and EOF). No matter where I have the ¹ in the file, it always reads as EOF. Edit, I added a check for errno and it gives this:

Error 84: Invalid or incomplete multibyte or wide character

However, ⁸ is Unicode U+2078 'SUPERSCRIPT EIGHT'. I wrote it to foo.txt via cat and copy-pasting from fileformat.info. A hexdump of foo.txt shows:

0000000: 52e2 81b8 32                             R...2

What's the problem?

1 Answers
Related