|
|
各位好
小弟發現gtk在中文輸入及顯示時的問題. 請各位指教, 共同討論... 謝謝.
先是顯示問題, 用i18n gettext 方法.
環境是 Redhat, locale 是 zh_CN.GB2312 及 zh_TW.Big5 二個, gtk+ 2.0....
gtk程序內只有以下幾個widget
- GtkWidget *window;
- GtkWidget *vbox;
- GtkWidget *lable;
- GtkWidget *entry;
复制代码
在gtk程序內只設定 #define _(STRING) gettext(STRING) , 在程序啟動是會出現警告如下:
- ** (test:3444): WARNING **: Invalid UTF8 STRING passed to pango_layout_set_text();
- (test:3444): Gdk_WARNING **: Error converting from UTF-8 to 'BIG5': 轉換輸入資料時遇到不正確的位元組次序
复制代码
程序介面可以顯示, 但沒有任何字串顯示, 全時空白的... <-- 這個例子在網上找了很多, 好像只能在gtk 1.2 上運行
再改程序, 為每個字串加入 g_locale_to_utf8(STRING), -1, NULL, NULL, NULL). 把所有字串轉換成utf8, 再編譯, 再編寫翻譯檔, 正確了!! :mrgreen: 能正確顯示中文(繁體/簡體也可以了).
到了輸入中文問題,
在以上的程序再加入, 當 gtk_entry_get_text(GTK_ENTRY(entry)); 時, 在文本模式上顯示出來, 但發現所顯示的都是亂碼, 無論在繁體及簡體的情況下也是一樣. 但在gtk介面上顯示的中文都是正確的(繁體/簡體也是正確), 本人想應該是get_text時編碼出現錯誤, 所以出現亂碼, 現請各位談談及討論這中文輸入的問題... :cry::cry:

我會不斷更新若有新發現... 謝謝. |
|