=?UTF-8?B?5ZiX6Kmm6Kej5rG6R2VkaXTnmoTnt6jnorzllY/poYzigJTigJTlop7liqBnZWRpdF9kbw==?= =?UTF-8?B?Y3VtZW50X3NldF9lbmNvZGluZ+WHveaVuA==?=



補丁在這裏:
https://bugzilla.gnome.org/attachment.cgi?id=228727&action=diff

Gedit編碼問題的困難在於,如果直接在Gedit的C代碼層面解決,涉及的代碼會比較多,上游不願意做,其他人提交補丁也不易被上游接受。
之前我嘗試過通過寫插件解決,但是我發現Gedit 3的GeditDocument的encoding屬性是只讀的,就放下了。

最近我發現有個Gedit 2的插件,能在文檔打開後設置編碼
http://code.google.com/p/gencodingconverter/

看了下代碼發現是通過直接操作buffer的方式來解決的(我之前怎麼沒想到呢)
不過這種方法至少在Gedit 3還是有個小問題的,比如說一個GBK的文件被識別成了ISO-8859-15,就算我們把buffer內容轉換成了正確的中文(buffer永遠是UTF-8的),保存的時候Gedit還是會記住ISO-8859-15並且問用戶是否換編碼保存,不友好。

所以我還是花了一些時間做了這個encoding屬性的setter,轉換buffer內容的事情在這個setter裏面做了,這樣相關的插件做起來就簡單多了。

請點評。


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]