[申请置顶]gedit中文乱码原理解析(修改2个配置文件即可修复问题)

系统字体配置、中文显示和输入法问题
回复
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

[申请置顶]gedit中文乱码原理解析(修改2个配置文件即可修复问题)

#1

帖子 careone » 2011-11-29 0:35

gedit中文乱码原理解析(修改2个配置文件即可修复问题)
[原贴名:gedit 打开gb2312中文编码文件乱码的终极解决方案]
Emacs汉化&gedit乱码解决QQ群: 240905967
fcitx-patch_1.2-1~careone1_all.deb
适用于 gedit 中文乱码的解决。
安装软件包后即解决问题,不用再做更改;
如果需要调整 fcitx 相关选项,可以运行 fcitx-patch --help 查看相关参数
(8.43 KiB) 已下载 97 次
原理:
修改2个文件(实质上等同于手动修改 gconf-editor 的配置文件):
%gconf.xml
文件1: %gconf.xml
修改本文件仅对当前用户有效
完整文件路径:

代码: 全选

~/.gconf/apps/gedit-2/preferences/encodings/
~/.gconf/apps/gedit-2/preferences/encodings/%gconf.xml
默认情况下上面的 encodings目录和下面的%gconf.xml文件都是不存在的

文件2: %gconf-tree.xml
完整文件路径:

代码: 全选

/etc/gconf/gconf.xml.defaults/%gconf-tree.xml
改文件的效果,和某些贴子里说的
运行gconf-editor, 再展开“/apps/gedit-2/preferences/encodings/”
编辑右侧的“auto_detected”将“GB18030”添加到最顶上。
效果相同

其它技术细节、更简单的方法及打好的 DEB 软件包, 可以参考另一个贴子:

fcitx输入法状态条乱码/config配置文件乱码的解决[2011-11-27制做deb包]
viewtopic.php?f=8&t=354420

下载并安装完deb包, 直接对全局用户生效,不用再额外执行其它命令和改动. 如果仍会乱码, 请退出图形界面,重新登陆即可见效.
手动解决方法:
用 GEDIT 打开任意文本文件,选择另存为,在弹出的菜单中选择并添加相应的文字编码,与本文所说方案,及网上所传运行 gconf-editor 效果相同,可自行体会。
下面2个文件中:
* "shown_in_menu" 的作用: 在另存为时,可以指定文件编码utf-8/gb2312等;
* "auto_detected"的作用: 打开文件时,自动检测编码

文件1: %gconf.xml
修改本文件仅对当前用户有效
完整文件路径:

代码: 全选

~/.gconf/apps/gedit-2/preferences/encodings/%gconf.xml
默认情况下上面的 encodings 目录和下面的 %gconf.xml 文件都是不存在的
修改方法:

代码: 全选

mkdir -vp ~/.gconf/apps/gedit-2/preferences/encodings
gedit ~/.gconf/apps/gedit-2/preferences/encodings/%gconf.xml
文件内容改为:

代码: 全选

<?xml version="1.0"?>
<gconf>
   <entry name="shown_in_menu" mtime="1321765642" type="list" ltype="string">
      <li type="string">
         <stringvalue>UTF-8</stringvalue>
      </li>
      <li type="string">
         <stringvalue>GB18030</stringvalue>
      </li>
      <li type="string">
         <stringvalue>GBK</stringvalue>
      </li>
      <li type="string">
         <stringvalue>GB2312</stringvalue>
      </li>
      <li type="string">
         <stringvalue>ISO-8859-15</stringvalue>
      </li>
   </entry>
   <entry name="auto_detected" mtime="1321764092" type="list" ltype="string">
      <li type="string">
         <stringvalue>UTF-8</stringvalue>
      </li>
      <li type="string">
         <stringvalue>GB18030</stringvalue>
      </li>
      <li type="string">
         <stringvalue>GBK</stringvalue>
      </li>
      <li type="string">
         <stringvalue>GB2312</stringvalue>
      </li>
      <li type="string">
         <stringvalue>CURRENT</stringvalue>
      </li>
      <li type="string">
         <stringvalue>ISO-8859-15</stringvalue>
      </li>
      <li type="string">
         <stringvalue>UTF-16</stringvalue>
      </li>
   </entry>
</gconf>
文件2: %gconf-tree.xml
修改本文件对所有用户有效
完整文件路径:

代码: 全选

/etc/gconf/gconf.xml.defaults/%gconf-tree.xml
修改方法:

代码: 全选

sudo gedit /etc/gconf/gconf.xml.defaults/%gconf-tree.xml
文件内容改为:

代码: 全选

<?xml version="1.0"?>
<gconf>
   <dir name="apps">
      <dir name="gedit-2">
         <dir name="preferences">
            <dir name="encodings">
               <entry name="shown_in_menu" mtime="1322489923" type="list" ltype="string">
                  <li type="string">
                     <stringvalue>UTF-8</stringvalue>
                  </li>
                  <li type="string">
                     <stringvalue>GB18030</stringvalue>
                  </li>
                  <li type="string">
                     <stringvalue>GBK</stringvalue>
                  </li>
                  <li type="string">
                     <stringvalue>GB2312</stringvalue>
                  </li>
                  <li type="string">
                     <stringvalue>ISO-8859-15</stringvalue>
                  </li>
               </entry>
               <entry name="auto_detected" mtime="1322489926" type="list" ltype="string">
                  <li type="string">
                     <stringvalue>UTF-8</stringvalue>
                  </li>
                  <li type="string">
                     <stringvalue>GB18030</stringvalue>
                  </li>
                  <li type="string">
                     <stringvalue>GBK</stringvalue>
                  </li>
                  <li type="string">
                     <stringvalue>GB2312</stringvalue>
                  </li>
                  <li type="string">
                     <stringvalue>CURRENT</stringvalue>
                  </li>
                  <li type="string">
                     <stringvalue>ISO-8859-15</stringvalue>
                  </li>
                  <li type="string">
                     <stringvalue>UTF-16</stringvalue>
                  </li>
               </entry>
            </dir>
         </dir>
      </dir>
   </dir>
</gconf>
上次由 careone 在 2012-06-24 23:39,总共编辑 9 次。
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid

Re: gedit 打开gb2312中文编码文件乱码的终极解决方案

#2

帖子 leeaman » 2011-11-29 8:35

支持,这个估计要gedit 3.2的版本吧?
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: gedit 打开gb2312中文编码文件乱码的终极解决方案

#3

帖子 ljj_jjl2008 » 2011-11-29 8:36

kate好,选项里面设置一下就行,不用改配置文件。
头像
xw_y_am
帖子: 3333
注册时间: 2009-05-08 14:18
系统: Arch
来自: 河南新乡
联系:

Re: gedit 打开gb2312中文编码文件乱码的终极解决方案

#4

帖子 xw_y_am » 2011-11-29 11:45

直接把系统改成GBK的编码会是什么情况 :em04 :em04
Linux 相关链接大杂烩

代码: 全选

if(read) {
    if(practise) return g☘☘d;
    else return w☘☘d;
} else {
    return t☘☘d;
}
头像
kuangquanshuili
帖子: 57
注册时间: 2011-11-03 17:51

Re: gedit 打开gb2312中文编码文件乱码的终极解决方案

#5

帖子 kuangquanshuili » 2011-11-29 11:47

HOLD不住了,不错。支持。
www.3gegg.com、www.paiziwang.com、www.shumeipai.net、www.52bazhong.com
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

Re: gedit 打开gb2312中文编码文件乱码的终极解决方案

#6

帖子 careone » 2011-11-29 21:01

leeaman 写了:支持,这个估计要gedit 3.2的版本吧?
我的系统: ubuntu 10.04.3 i386, gedit 2.30.3
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid

Re: gedit 打开gb2312中文编码文件乱码的终极解决方案

#7

帖子 leeaman » 2011-11-29 21:08

哦,支持,这个改法以前没见过
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
回复