问题
在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;
}
本文解决了一个常见的跨平台文件传输问题,即在Windows与Linux间通过FTP传输时,由于文件名编码不同(Windows为GBK,Linux为UTF-8)导致的中文乱码现象。提供了解决方案,包括在CentOS上使用convmv命令进行编码转换,以及在Windows端代码中实现GBK到UTF-8的编码转换。

4505

被折叠的 条评论
为什么被折叠?



