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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值