請問一下
小弟在windows2000下先建立一個unicode編碼的檔案 (不是用utf-8)
然後在gnome下開這個檔案 , 用gedit開檔 為什麼會出現亂碼
用vi編輯器開檔就可以正常顯示
是需要在那邊設定嗎?
我在gtk的程式底下也沒辦法顯示
所以我自己寫一個讀檔的程式測試看看
如下:
FILE *fptr;
char fname[80]="unicode.txt";
gunichar ch;
gchar buffer[40] ;
fptr=fopen(fname,"r");
while((ch=getc(fptr))!=EOF)
printf("%d\n",ch);
fclose(fptr);
註: 1 . unicode.txt檔案內容是 "測市看看linux能不能讀檔 1234"
2 . 此檔案為unicode編碼 (不是utf8)
則印出來的碼是正確的unicode編碼 如下 (十進位)
L H
255 / 254
44 / 110
2 /94
11 /119
11 /119
108 / 0
105 / 0
110 / 0
117 / 0
120 / 0
253 /128
13 / 78
253 / 128
128 /139
148 / 106
32 / 0
49 /0
50 /0
51 / 0
52 /0
32 /0
10 / 0
10 /0
但是我若用 printf("%c\n",ch);
結果為 : "�,n^ww l i n u x � N ����j 1 2 3 4"
我又試著寫,將讀到的資料傳至 gtklabel 讓他顯示出來
FILE *fptr;
char fname[80]="unicode.txt";
gunichar ch;
gchar buffer[40] ;
GtkWidget *label_title;
fptr=fopen(fname,"r");
fread(buffer , sizeof(char),40,fptr);
if(fptr==NULL)
{
printf("file open error");
exit(1);
}
fclose(fptr);
label_title = gtk_label_new (buffer);
gtk_widget_show (label_title);
gtk_box_pack_start (GTK_BOX (hbox), label_title, FALSE, FALSE, 0);
gtk_widget_set_size_request (label_title, 600, 20);
label 也是顯示不出來
但以上的動作,,若unicode.txt檔為unf8的編碼就可以正常顯示
請問一下 這種要麼解決 ?
感激大家!!