QT 中文乱码解决问题 跨平台操作

移动开发
本文介绍的是QT 中 中文乱码解决问题 跨平台操作,坛子里面很多友们也在讨论这个问题,所以与大家分享一下这篇文章,先来看内容。

QT 中文乱码解决问题 跨平台操作是本文要介绍的内容。跨平台(Linux  Windows)中文文件名乱码的解决,从网路上搜了很久,都是没有能够把ubuntu下用gftp的中文乱码问题解决的,这篇文章虽然废话但思路比较清晰,容易了解问题所在及如何解决。就转载于此。

事情的起因是这样的~~

在很久很久以前——大约是2年多年前,我整了一台P3的机器装了FreeBSD 6.2做服务器,经常用Filezilla的SFTP往里面备份本地的文件,当然也包括一些中文名的文件。一切都很正常,上传下载都没问题,即使是用 SSH连过去用Tar打包再Gzip压缩以后下载下来解开都没问题。

但是好日子在前几天到头了。我前一阵又弄了一台P3的机器装了Ubuntu 7.10。问题出现了:

首先是在Windows上用Filezilla连接Ubuntu时看到的中文文件名全是乱码,但是用Putty通过SSH连接Ubuntu却是正常 的(原先是乱码,后来改设置为UTF-8编码就好了,不过Filezilla没有类似的设置可改)。如果用Filezilla向Ubuntu上传本地的中 文文件,则在Filezilla里看到Remote端的文件名是正确的,但在Putty里看到是乱码

然后更严重的问题是:当我在Ubuntu上用Filezilla的SFTP从FreeBSD上下载文件时发现那些中文文件名都成了乱码。只好改用 tar/tar.gz再试,结果还是乱。***问了Google,但是结果并不理想,试过很多方法都无法解决,甚至为此特地在FreeBSD和Ubuntu 上都装了p7zip试验,也还是不行。

折腾了好几天之后,我才想到应该研究一下几个系统上的locale设置究竟是如何的——坦白说,要不是因为搜到的资料里有提到这方面,我从前还真没注意到这回事。在FreeBSD和Ubuntu上分别运行了locale命令检查的结果是:

FreeBSD的LC_ALL为“C”,即”POSIX”的别名,似乎是一种无固定编码的方案,或者可以认为就是本地编码,默认的设置。
Ubuntu的LC_ALL为“zh_CN.UTF-8”,这个是我设置的。
Windows不必说了,肯定是本地编码——只是我没有想到的是,公司里用的英文版Windows居然也是本地编码,我一直以为是Unicode的,看来是为了保持兼容。

这样就好理解了,Filezilla不改变编码方式,所以当Remote端与本机的编码不一致时,必然乱码。所以在Windows上用 Filezilla连接Ubuntu看到乱码,而我的Putty因为是设置为UTF-8编码,所以看到的是正确的——因为Ubuntu一端是UTF-8。 而如果用Filezilla上传中文文件,则因为Windows是本地编码,所以上传以后仍然为本地编码(GB系),而Ubuntu是UTF-8所以是乱 码。

FreeBSD那边的问题也是一样的,因为那些文件都是以前从Windows上传上去的,用的都是GB系编码,而早年我用Putty都是用默认的本 地编码方案,所以一直没有发现问题。这样的话,因为FreeBSD是本地编码,与Ubuntu的UTF-8不一致,所以怎么弄都是乱码

但是据说用7zip这样的工具打包以后是可以解决这样的编码不一致问题的,我试了却没有成功。后来才想明白,因为7zip是根据系统的locale设置来对文件名进行相应的处理,因为原来我处理的时候文件名是GB系的编码,而系统是设置为UTF-8,所以总也不对。

***的解决方案是:

在ubuntu上用以下命令:

export LC_ALL="zh_CN.GBK"scp raptor@freebsdserver:/home/raptor/myfiles/*.* .export LC_ALL="zh_CN.UTF-8"convmv -f GBK -t UTF-8 --notest *.*原理就是先把ubuntu的locale改为GBK,然后用SSH COPY文件过来,再改locale为UTF-8,然后用convmv来转换文件名的编码。

不过经过试验表明,不改变locale直接scp也是可以的,因为scp并不会改变文件的编码方式,不过改了locale以后便于在转编码之前检查scp过来的内容(否则scp过来是乱码,要到转编码后才正常)。

这样做的结果就是,这些文件在ubuntu上是正常了,以后要再弄回windows就比较麻烦,需要用7zip之类的工具打包下载再解开。

归根到底这些问题都是因为该死的Windows用本地编码来记录文件名,Unicode化做得不够彻底。

小结:关于QT中文乱码解决问题 跨平台操作的内容介绍完了,希望本文对你有所帮助。有问题可以留言,一起讨论!更多相关内容请参考编辑推荐。

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-29 18:02:58

Qt 中文 翻译

2009-07-28 12:35:37

querystring

2011-02-24 10:48:51

FireFTP

2009-11-26 16:30:52

Suse中文乱码问题

2010-11-09 17:09:23

SQL Server中

2011-06-13 16:16:32

Qt 中文问题

2017-08-02 15:51:24

PHP中文乱码

2021-12-03 12:15:01

QT中文乱码Windows

2011-08-08 10:29:12

MySQL

2009-07-06 17:50:13

Java JSP

2014-12-26 10:23:21

谷歌

2012-07-06 15:10:39

跨平台工具QtNokia

2013-03-20 09:54:07

2009-07-01 18:05:54

JSP中文乱码

2009-07-02 13:26:32

JSP中文乱码

2009-06-30 13:49:21

excel文档Jsp

2010-05-06 17:07:34

Unix命令

2013-01-30 15:07:59

Shell

2022-09-02 16:07:02

团队问题

2012-02-28 09:51:05

点赞
收藏

51CTO技术栈公众号