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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章