移动设备(U盘)GBK编码中文显示乱码的解决方法(如何自动设置pmount的charset参数)

系统字体配置、中文显示和输入法问题
回复
sammeme
帖子: 198
注册时间: 2006-04-28 21:31

移动设备(U盘)GBK编码中文显示乱码的解决方法(如何自动设置pmount的charset参数)

#1

帖子 sammeme » 2006-04-28 23:37

如果你的系统的默认LOCALE设置的是和GBK编码不相容的话(比如我就是设置的是”UTF-8“)。

在Gnome中自动挂起移动设备是使用了pmount这个软件包,虽然它可以有charset的参数进行设置,但是好像在gnome设置中并没有相关选项,我们要不手动用pmount+正确的charset来挂起移动设备,或这我们可以用一下的小脚本来让它自动设置正确的(GBK)编码:

pmount 这个软件包中有两个子程序: pmount 和 pmount-hal, 其中pmount-hal会调用pmount并且可以传递参数给pmount。以下介绍的方法就是针对pmount (我们也可以使用pmount-pal,但下面的配置要相应的改动)

1) 用root权限 移动 /usr/bin/pmount 到 /usr/bin/pmount-utf8

代码: 全选

mv /usr/bin/pmount  /usr/bin/pmount-utf8
2) 用root权限 新建 /usr/bin/pmount 文件其内容如下

代码: 全选

#!/bin/bash
/usr/bin/pmount-utf8  --charset cp936 "$@"
* --charset cp936 指明pmount-utf8(也就是原来的pmount)挂起时用GBK(cp936)编码。"$@"是指把pmount收到的参数原封不动的传给pmount-utf8,这也保证了pmount-utf8可以正常工作。

3) 用root权限 设置 /usr/bin/pmount 的权限

代码: 全选

chmod --reference=/usr/bin/pmount-utf8 /usr/bin/pmount
chown --reference=/usr/bin/pmount-utf8 /usr/bin/pmount
* 把您的U盘这类的插上,现在GBK的中文文件就会正确的显示出来。当然你可以设置--charset 到你所需要的编码。
上次由 sammeme 在 2006-04-29 0:09,总共编辑 1 次。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#2

帖子 eexpress » 2006-04-28 23:51

dapper的什么都不要设置啊。这个对于小老鼠,倒是可能有效。对gnome没意义了。
● 鸣学
sammeme
帖子: 198
注册时间: 2006-04-28 21:31

#3

帖子 sammeme » 2006-04-29 0:01

eexpress 写了:dapper的什么都不要设置啊。这个对于小老鼠,倒是可能有效。对gnome没意义了。
如果您的LOCALE的默认设置是GBK或者是gb2312,以上我讨论的问题自然是没有。

你要是愿意可以自己做个实验:
把你的默认LOCALE设成UTF一类的,然后设置LC_CTYPE="zh_CN.GBK"以支持中文。你自己用U盘试试还显示正常不。

这个是pmount的问题跟windows manger 没有关系。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#4

帖子 eexpress » 2006-04-29 0:20

都是utf8啊。为什么要设置GBK的。都正常哦。
● 鸣学
sammeme
帖子: 198
注册时间: 2006-04-28 21:31

#5

帖子 sammeme » 2006-04-29 0:30

eexpress 写了:都是utf8啊。为什么要设置GBK的。都正常哦。
很多人的电脑上中文文件和文件夹是用GBK的编码来命名的。

utf8和GBK是不相容的。特别是文件名的显示方面,用GBK编码的文件名就不可能在utf8的环境中显示正常,反之易然。
xiang
帖子: 36
注册时间: 2005-11-28 10:43
来自: 北京

#6

帖子 xiang » 2006-05-16 12:33

chmod --reference=/usr/bin/pmount-utf8 /usr/bin/pmount
chown --reference=/usr/bin/pmount-utf8 /usr/bin/pmount

参数--reference=是什么意思
sammeme
帖子: 198
注册时间: 2006-04-28 21:31

#7

帖子 sammeme » 2006-05-16 14:02

xiang 写了:chmod --reference=/usr/bin/pmount-utf8 /usr/bin/pmount
chown --reference=/usr/bin/pmount-utf8 /usr/bin/pmount

参数--reference=是什么意思
--reference= 后面跟参考文件. 这样做的话,我们就可以让这两个文件的权限和所属用户,组完全一致.
ltkun
帖子: 1340
注册时间: 2006-01-10 19:09

#8

帖子 ltkun » 2006-05-16 15:12

sammeme 写了:
eexpress 写了:都是utf8啊。为什么要设置GBK的。都正常哦。
很多人的电脑上中文文件和文件夹是用GBK的编码来命名的。

utf8和GBK是不相容的。特别是文件名的显示方面,用GBK编码的文件名就不可能在utf8的环境中显示正常,反之易然。
硬盘可以在fstab里面加charset参数吧
gbk 好象很多人都反对
utf是趋势
我的优盘自动加载的 但是我也没有设置任何参数 中文名字正常 奇怪了
alteeno
帖子: 254
注册时间: 2006-01-18 18:11

#9

帖子 alteeno » 2006-05-19 15:49

虽然GBK很多人都反对 ,但如果要在windows和linux下交换文件的话,gbk是唯一选择。windows好像不支持utf-8的中文显示的。
sammeme
帖子: 198
注册时间: 2006-04-28 21:31

#10

帖子 sammeme » 2006-05-19 18:19

ltkun 写了:
sammeme 写了:
eexpress 写了:都是utf8啊。为什么要设置GBK的。都正常哦。
很多人的电脑上中文文件和文件夹是用GBK的编码来命名的。

utf8和GBK是不相容的。特别是文件名的显示方面,用GBK编码的文件名就不可能在utf8的环境中显示正常,反之易然。
硬盘可以在fstab里面加charset参数吧
gbk 好象很多人都反对
utf是趋势
我的优盘自动加载的 但是我也没有设置任何参数 中文名字正常 奇怪了
fstab 上设置charset自由度有限,好比你设置好了sda1, 但是由于某种原因现在它被系统认到sdb1上了,这样你又得重新设置。charset只对fat32之类的文件系统有效。linux的文件系统比如ext2/3 reiserfs不会有这个局限。

如果你在gnome环境下操作你的U盘的话,那自动加载就不会有问题。gnome内部默认的的编码是UTF-8,所以用gnome的文件管理器创建的文件名是以UTF-8来编码的。 如果把你的U盘放到别人的GBK环境中,显示肯定会有问题的。
头像
nobrain
帖子: 808
注册时间: 2005-08-25 13:58
来自: ustc
联系:

#11

帖子 nobrain » 2006-05-19 21:53

我的编码就是utf8,在lin下往fat32上创建文件夹,在我的xp下面看很正常
而且,今天我就在lin下在u盘上建了一个叫"论文"的文件夹,把我的论文(用ms word写的:oops: )考了过去, 再考到实验室的xp上,什么问题都没有,在xp下,那个文件夹的中文好好的。
btw, 我用的是dapper
爱喝真猪奶茶的夜鸣猪
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

dapper的fvwm都正常。

#12

帖子 eexpress » 2006-05-19 23:14

weblog_entry.php?e=825

代码: 全选

exp@eexpress:/media$ pmount /dev/sda1 
exp@eexpress:/media$ cat /etc/mtab |grep sda 
/dev/sda1 /media/sda1 vfat rw,noexec,nosuid,nodev,quiet,shortname=mixed,uid=1000,gid=1000,umask=077,iocharset=utf8 0 0
● 鸣学
回复