問題
在Windows上文件名的編碼爲GBK,而在Linux上文件名的編碼爲UTF-8。
所以當在Windows上使用ftp方式從Linux上傳下拉時,會導致上傳文件名的中文變成了亂碼,而下拉時找不到指定文件,
解決辦法:
1、CentOS下 輸入
yum install convmv
convmv -f gbk -t utf-8 -r --notest /home/
如果顯示key報錯,可以在安裝後面加上 --gpgnocheck
--notest 後面跟的就是轉換編碼的目錄或者文件名
2、在Windows端的代碼端將文件名轉爲utf-8
char* GBKToUTF8( const char* chGBK )
{
DWORD dWideBufSize=MultiByteToWideChar(CP_ACP, 0,(LPCSTR)chGBK,-1, NULL, 0);
wchar_t * pWideBuf[124];
wmemset(pWideBuf, 0, dWideBufSize);
MultiByteToWideChar(CP_ACP,0,(LPCSTR)chGBK,-1,pWideBuf,dWideBufSize);
DWORD dUTF8BufSize=WideCharToMultiByte(CP_UTF8,0(LPCWSTR)pWideBuf,-1,NULL,0,NULL,NULL);
char * pUTF8Buf=[124];
memset(pUTF8Buf, 0, dUTF8BufSize);
WideCharToMultiByte( CP_UTF8,0,(LPCWSTR)pWideBuf,-1,pUTF8Buf,dUTF8BufSize,NULL,NULL);
free(pWideBuf);
return pUTF8Buf;
}