偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

QT 中文亂碼解決問(wèn)題 跨平臺(tái)操作

移動(dòng)開(kāi)發(fā)
本文介紹的是QT 中 中文亂碼解決問(wèn)題 跨平臺(tái)操作,壇子里面很多友們也在討論這個(gè)問(wèn)題,所以與大家分享一下這篇文章,先來(lái)看內(nèi)容。

QT 中文亂碼解決問(wèn)題 跨平臺(tái)操作是本文要介紹的內(nèi)容??缙脚_(tái)(Linux  Windows)中文文件名亂碼的解決,從網(wǎng)路上搜了很久,都是沒(méi)有能夠把ubuntu下用gftp的中文亂碼問(wèn)題解決的,這篇文章雖然廢話(huà)但思路比較清晰,容易了解問(wèn)題所在及如何解決。就轉(zhuǎn)載于此。

事情的起因是這樣的~~

在很久很久以前——大約是2年多年前,我整了一臺(tái)P3的機(jī)器裝了FreeBSD 6.2做服務(wù)器,經(jīng)常用Filezilla的SFTP往里面?zhèn)浞荼镜氐奈募?,?dāng)然也包括一些中文名的文件。一切都很正常,上傳下載都沒(méi)問(wèn)題,即使是用 SSH連過(guò)去用Tar打包再Gzip壓縮以后下載下來(lái)解開(kāi)都沒(méi)問(wèn)題。

但是好日子在前幾天到頭了。我前一陣又弄了一臺(tái)P3的機(jī)器裝了Ubuntu 7.10。問(wèn)題出現(xiàn)了:

首先是在Windows上用Filezilla連接Ubuntu時(shí)看到的中文文件名全是亂碼,但是用Putty通過(guò)SSH連接Ubuntu卻是正常 的(原先是亂碼,后來(lái)改設(shè)置為UTF-8編碼就好了,不過(guò)Filezilla沒(méi)有類(lèi)似的設(shè)置可改)。如果用Filezilla向Ubuntu上傳本地的中 文文件,則在Filezilla里看到Remote端的文件名是正確的,但在Putty里看到是亂碼。

然后更嚴(yán)重的問(wèn)題是:當(dāng)我在Ubuntu上用Filezilla的SFTP從FreeBSD上下載文件時(shí)發(fā)現(xiàn)那些中文文件名都成了亂碼。只好改用 tar/tar.gz再試,結(jié)果還是亂。***問(wèn)了Google,但是結(jié)果并不理想,試過(guò)很多方法都無(wú)法解決,甚至為此特地在FreeBSD和Ubuntu 上都裝了p7zip試驗(yàn),也還是不行。

折騰了好幾天之后,我才想到應(yīng)該研究一下幾個(gè)系統(tǒng)上的locale設(shè)置究竟是如何的——坦白說(shuō),要不是因?yàn)樗训降馁Y料里有提到這方面,我從前還真沒(méi)注意到這回事。在FreeBSD和Ubuntu上分別運(yùn)行了locale命令檢查的結(jié)果是:

FreeBSD的LC_ALL為“C”,即”POSIX”的別名,似乎是一種無(wú)固定編碼的方案,或者可以認(rèn)為就是本地編碼,默認(rèn)的設(shè)置。
Ubuntu的LC_ALL為“zh_CN.UTF-8”,這個(gè)是我設(shè)置的。
Windows不必說(shuō)了,肯定是本地編碼——只是我沒(méi)有想到的是,公司里用的英文版Windows居然也是本地編碼,我一直以為是Unicode的,看來(lái)是為了保持兼容。

這樣就好理解了,F(xiàn)ilezilla不改變編碼方式,所以當(dāng)Remote端與本機(jī)的編碼不一致時(shí),必然亂碼。所以在Windows上用 Filezilla連接Ubuntu看到亂碼,而我的Putty因?yàn)槭窃O(shè)置為UTF-8編碼,所以看到的是正確的——因?yàn)閁buntu一端是UTF-8。 而如果用Filezilla上傳中文文件,則因?yàn)閃indows是本地編碼,所以上傳以后仍然為本地編碼(GB系),而Ubuntu是UTF-8所以是亂 碼。

FreeBSD那邊的問(wèn)題也是一樣的,因?yàn)槟切┪募际且郧皬腤indows上傳上去的,用的都是GB系編碼,而早年我用Putty都是用默認(rèn)的本 地編碼方案,所以一直沒(méi)有發(fā)現(xiàn)問(wèn)題。這樣的話(huà),因?yàn)镕reeBSD是本地編碼,與Ubuntu的UTF-8不一致,所以怎么弄都是亂碼。

但是據(jù)說(shuō)用7zip這樣的工具打包以后是可以解決這樣的編碼不一致問(wèn)題的,我試了卻沒(méi)有成功。后來(lái)才想明白,因?yàn)?zip是根據(jù)系統(tǒng)的locale設(shè)置來(lái)對(duì)文件名進(jìn)行相應(yīng)的處理,因?yàn)樵瓉?lái)我處理的時(shí)候文件名是GB系的編碼,而系統(tǒng)是設(shè)置為UTF-8,所以總也不對(duì)。

***的解決方案是:

在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文件過(guò)來(lái),再改locale為UTF-8,然后用convmv來(lái)轉(zhuǎn)換文件名的編碼。

不過(guò)經(jīng)過(guò)試驗(yàn)表明,不改變locale直接scp也是可以的,因?yàn)閟cp并不會(huì)改變文件的編碼方式,不過(guò)改了locale以后便于在轉(zhuǎn)編碼之前檢查scp過(guò)來(lái)的內(nèi)容(否則scp過(guò)來(lái)是亂碼,要到轉(zhuǎn)編碼后才正常)。

這樣做的結(jié)果就是,這些文件在ubuntu上是正常了,以后要再弄回windows就比較麻煩,需要用7zip之類(lèi)的工具打包下載再解開(kāi)。

歸根到底這些問(wèn)題都是因?yàn)樵撍赖腤indows用本地編碼來(lái)記錄文件名,Unicode化做得不夠徹底。

小結(jié):關(guān)于QT中文亂碼解決問(wèn)題 跨平臺(tái)操作的內(nèi)容介紹完了,希望本文對(duì)你有所幫助。有問(wèn)題可以留言,一起討論!更多相關(guān)內(nèi)容請(qǐng)參考編輯推薦。

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-29 18:02:58

Qt 中文 翻譯

2009-07-28 12:35:37

querystring

2009-11-26 16:30:52

Suse中文亂碼問(wèn)題

2011-02-24 10:48:51

FireFTP

2010-11-09 17:09:23

SQL Server中

2011-06-13 16:16:32

Qt 中文問(wèn)題

2017-08-02 15:51:24

PHP中文亂碼

2021-12-03 12:15:01

QT中文亂碼Windows

2024-11-08 13:47:35

中文亂碼配置

2014-12-26 10:23:21

谷歌

2013-03-20 09:54:07

2009-07-06 17:50:13

Java JSP

2011-08-08 10:29:12

MySQL

2012-07-06 15:10:39

跨平臺(tái)工具QtNokia

2013-01-30 15:07:59

Shell

2022-09-02 16:07:02

團(tuán)隊(duì)問(wèn)題

2010-05-06 17:07:34

Unix命令

2009-06-30 13:49:21

excel文檔Jsp

2009-07-01 18:05:54

JSP中文亂碼

2009-07-02 13:26:32

JSP中文亂碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)