Windows 文件名在 Linux 下显示为乱码解决方法 及 GBK 与 UTF-8 编码转换

问题

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

猜你喜欢

转载自blog.csdn.net/Hilaph/article/details/105575765