LinuxForum.Fans
Тема

Си проблема с кодировкой

Автор: enRai 3 сообщений 2123 просмотров
#22210

И снова здрасте :) Возникла проблема с кодировкой:
Имеется файл с набором слов в кодировке win-1251 разделенных пробелом делаю примерно так:

text

/*...*/
int main(void) {
    FILE *f;
    char str[20];
    f=fopen("file.txt","r");
    while(!feof(f)) {
        fscanf(f,"%s",str);
        printf("%s\n",str);
    }
    fclose(f);
    return 0;
}

Результат - каракули... Делаю:

text

$ iconv -f WINDOWS-1251 -t UTF-8 file.txt -o file2.txt

Опять каракули, но уже другие :)
Тоже самое и для KOI8-R, CP1251
Как быть? Может не fscanf'ом добывать данные?

text

$ gcc --version
gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3
#22216

enRai,
Какая кодировка по умолчанию в Вашем линуксе?

#22221

Hvzh,
Если правильно понял, то вот:

text

$ echo $LANG
ru_RU.UTF-8

И еще у меня сразу вытекающий вопрос возник: в итоге то мне нужно не в консоль все выдать, а сделать запрос с этими данными в mySQL, база в UTF-8. В консоль я просто для проверки выводил.. Не поторопился ли я вопрос тут задавать? Может в консоль - каракули, а в базу все нормально будет? Сейчас не имею возможности проверить...

Войдите или зарегистрируйтесь, чтобы ответить.