2013-02-21 1 views
1

Я изучаю язык C. Мне нужно создать текстовый файл с данными Unicode. Я написал такой код:Недопустимые локализованные символы в текстовом файле

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

int main(int argc, char *argv[]) { 

    wchar_t *s1 = L"Привет, мир!\n"; 
    wchar_t *s2 = L"Hello, World!"; 

    FILE *fp = fopen("./hello.txt", "w"); 

    fputws(s1, fp); 
    fputws(s2, fp); 

    fclose(fp); 

    exit(EXIT_SUCCESS); 
} 

Но я получаю такой результат:

??????, ???! 
Hello, World! 

Почему я не получаю русских символов?

+0

Пожалуйста, объясните, как вы просматриваете файл –

+0

я открыть его в Gedit (Linux). –

+0

Какая кодировка gedit считает файл? Соответствует ли это фактической кодировке? И если вы используете Linux, то я подозреваю, что UTF-8 будет предпочтительной кодировкой. –

ответ

2

Возможно, у вас возникли проблемы с локалями в терминале, на котором запущена программа. Если это так, то вам нужно только установить локаль так:

setlocale(LC_CTYPE,"");

Более подробная информация here

+0

Да, все работает отлично! Спасибо! –