QFtp中文亂碼的問題

2021-07-02 17:51:53 字數 1164 閱讀 8426

1) 理論上ftp伺服器支援utf8的話,就可以直接傳送用utf8編碼的中文檔名

開啟utf8的方法是:

rawcommand("opts

utf8

on");

2)如果不支援的話,因為ftp協議裡面,規定檔名編碼為iso-8859-1,iso-8859-1的別名是latin1,正是qt中qstring預設的內部編碼格式。
假如我們已經將我們的原始碼設定為utf8格式,並且**中設定了qstring的內部編碼格式為utf8

//!設定utf-8編碼

qtextcodec::setcodecforlocale(qtextcodec::codecforname("utf-8"));

qtextcodec::setcodecforcstrings(qtextcodec::codecforname("utf-8"));

qtextcodec::setcodecfortr(qtextcodec::codecforname("utf-8"));

ftp命令要這麼寫:
//! 將中文儲存進qstring中,qstring中以utf8編碼
qstring

strcmd =

qstring("mkd

%1").arg("/中文目錄");

//! 因為我們的qstring是utf8的,所以轉換為qbytearray的時候需要呼叫toutf8,此時qbytearray的編碼格式是qt預設的latin1
qbytearray bacmd =strcmd.toutf8();
//! 將

latin1編碼的

qbytearray轉換成qstring

rawcommand(qstring::fromlatin1(bacmd));
3)但我遇到的情況是即使ftp server支援utf8,我仍舊需要用latin1編碼才可以成功操作中文檔案。這個問題蠻費解的。

QFtp 與中文問題

鏈結 既然這樣,就將自己兩次回答簡單整理一下,作為一篇部落格吧。如果你對文字不感興趣,不妨直接看看這個表 看看網路中傳遞的檔案路徑名 qftp提供的檔案路徑名 以及我們期待的檔案路徑名的關係 網路傳遞的 位元組流 qftp介面提供的 字串 中間態位元組流 原始位元組流 我們操作的 字串 qbytea...

QFtp 與中文問題

鏈結 既然這樣,就將自己兩次回答簡單整理一下,作為一篇部落格吧。如果你對文字不感興趣,不妨直接看看這個表 看看網路中傳遞的檔案路徑名 qftp提供的檔案路徑名 以及我們期待的檔案路徑名的關係 網路傳遞的 位元組流 qftp介面提供的 字串 中間態位元組流 原始位元組流 我們操作的 字串 qbytea...

中文亂碼問題

母頁 tran cel.jsp?p user id p user id p paraxml mytran cel paraxml ie8對window.open二進位製流會遮蔽,用二次請求解決該問題 modify by 20120731。mytran cel paraxml encodeuri my...