gtk如何顯示unicode檔案內容 (不是utf8檔案)

歡迎提問 debian desktop 相關問題,何謂 desktop ? 舉凡您日常生活會用到的部份,如上網 ( www 、 bbs ..) 、程式設計、繪圖...等等。 通常以 X Window 環境底下問題為主。

gtk如何顯示unicode檔案內容 (不是utf8檔案)

文章gydkbabeq » 週五 5月 19, 2006 11:28 am

請問一下
小弟在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^ w w 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的編碼就可以正常顯示
請問一下 這種要麼解決 ?
感激大家!!
gydkbabeq
可愛的小學生
可愛的小學生
 
文章: 4
註冊時間: 週五 5月 19, 2006 10:43 am

文章eliu » 週五 5月 19, 2006 4:43 pm

gedit --encoding=UTF-16 or
gedit --encoding=UTF-32


gtk widget 本來就只接受 UTF-8 encoding,不會自動轉換的。
頭像
eliu
可愛的小學生
可愛的小學生
 
文章: 44
註冊時間: 週六 8月 28, 2004 1:33 pm
來自: 新竹

文章gydkbabeq » 週日 5月 21, 2006 5:01 pm

eliu 寫:gedit --encoding=UTF-16 or
gedit --encoding=UTF-32


gtk widget 本來就只接受 UTF-8 encoding,不會自動轉換的。

謝謝你的告知 那我在另外想辦法好了
gydkbabeq
可愛的小學生
可愛的小學生
 
文章: 4
註冊時間: 週五 5月 19, 2006 10:43 am


回到 debian desktop

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客