windows和linux之间的编码转换。
2012-01-17 10:41
302 查看
1.通常windows的编码格式是GBK。但linux可能是gbk也可能是utf-8.可以用 echo $LANG.
2.现在我需要把windows上的文件上传到linux上。如果linux的编码格式是gbk,那么恭喜你,不需要做编码转换。
如果linux编码格式utf-8,没关系,我们做下编码转换。如下:
ConvertGBKToUtf8
3.涉及到远程linux目录的地方,都有可能需要编码转换。如:
上传、下载、获取远程目录、计算远程文件的大小、正在下载的文件的显示、远程创建文件夹等。
4.在下载文件信息显示和获取远程目录列表时,由于程序跑在windows上,如果linux上的编码是utf-8,此时需要把utf-8转换成GBK。
ConvertUtf8ToGBK
5.以上所有转换都是对路径的转换。完!
2.现在我需要把windows上的文件上传到linux上。如果linux的编码格式是gbk,那么恭喜你,不需要做编码转换。
如果linux编码格式utf-8,没关系,我们做下编码转换。如下:
bool CSftpNetEx::_ProcessSendFile(string file_name,string remote_file) { if(m_srvTypeChar == CHARACTER_UNICODE) sftp_utils_space::utils::ConvertGBKToUtf8(remote_file); ... }
ConvertGBKToUtf8
void ConvertGBKToUtf8(string& strGBK) { int len=MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL,0); unsigned short * wszUtf8 = new unsigned short[len+1]; memset(wszUtf8, 0, len * 2 + 2); MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, (LPWSTR)wszUtf8, len); len = WideCharToMultiByte(CP_UTF8, 0, (LPWSTR)wszUtf8, -1, NULL, 0, NULL, NULL); char *szUtf8=new char[len + 1]; memset(szUtf8, 0, len + 1); WideCharToMultiByte (CP_UTF8, 0, (LPWSTR)wszUtf8, -1, szUtf8, len, NULL,NULL); strGBK = szUtf8; delete[] szUtf8; delete[] wszUtf8; }
3.涉及到远程linux目录的地方,都有可能需要编码转换。如:
上传、下载、获取远程目录、计算远程文件的大小、正在下载的文件的显示、远程创建文件夹等。
4.在下载文件信息显示和获取远程目录列表时,由于程序跑在windows上,如果linux上的编码是utf-8,此时需要把utf-8转换成GBK。
ConvertUtf8ToGBK
void ConvertUtf8ToGBK(string& strUtf8) { int len=MultiByteToWideChar(CP_UTF8, 0, strUtf8.c_str(), -1, NULL,0); unsigned short * wszGBK = new unsigned short[len+1]; memset(wszGBK, 0, len * 2 + 2); MultiByteToWideChar(CP_UTF8, 0, strUtf8.c_str(), -1, (LPWSTR)wszGBK, len); len = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)wszGBK, -1, NULL, 0, NULL, NULL); char *szGBK=new char[len + 1]; memset(szGBK, 0, len + 1); WideCharToMultiByte (CP_ACP, 0, (LPWSTR)wszGBK, -1, szGBK, len, NULL,NULL); strUtf8 = szGBK; delete[] szGBK; delete[] wszGBK; }
5.以上所有转换都是对路径的转换。完!
相关文章推荐
- Windows与Linux之间的编码(换行符)转换 ( by quqi99)
- linux文本与windows文本之间的转换
- 【linux】windows和linux编码相互转换
- 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决
- linux与windows的文本文件之间的转换
- 如何在DOS/Windows和Linux/Unix之间进行文件格式转换?
- GB2312编码与UTF-8编码的相互转换代码(linux windows下通用)
- 如何在DOS/Windows和Linux/Unix之间进行文件格式转换
- 简要介绍一下UTF-8编码和GBK编码------并利用linux中的iconv命令来实现UTF-8和GBK之间的相互转换
- windows文件复制到linux乱码,转换文件名编码
- Notepad++中Windows,Unix,Mac三种格式之间的转换
- JSON: Python Objects与String之间转换【json.dumps把python任意数据类型转换成字符串,json.loads把字符串转换为unicode编码】
- scp命令在linux和windows之间互传文件
- Windows与Linux之间的文件共享
- Linux下将UTF8编码批量转换成GB2312编码的方法
- windows与linux之间文件的传输方式总结(转)
- 如何使得Windows与Linux 之间进行文件共享
- [转] 使用SecureCRT的SFTP在WINDOWS与LINUX之间传输文件
- Linux下jstring与char字符串类型之间的转换
- 利用securecrt在linux与windows之间传输文件