问题
在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;
}