记录一下最近用到的几个知识点
2010-08-10 15:43
363 查看
1 char* 转换为wchar_t
2 wchar_t 转换为char*
3 unicode to utf-8
4. GBK to utf-8
5. utf-8 to GBK
6. 读写unicode 文件。
这里用到了 CStdioFileEx ,下载地址: http://files.cnblogs.com/tingsking/StdioFileEx.zip
7. 发送http 请求
//char* to wchar_t wchar_t wfilename[256] ={0}; char filename[] = {"c://init.properties"}; ulBytes = MultiByteToWideChar(CP_ACP,0,filename,-1,NULL,0); ulBytes = MultiByteToWideChar(CP_ACP,0,filename,-1,wfilename,ulBytes);
2 wchar_t 转换为char*
//wchar_t to char* ulBytes = WideCharToMultiByte(CP_ACP,0, wfilename,-1,NULL,0,NULL,NULL); ulBytes = WideCharToMultiByte(CP_ACP,0, wfilename,-1, filename,ulBytes,NULL,NULL);
3 unicode to utf-8
int UniToUTF8(CString strUnicode,char *szUtf8) { //MessageBox(strUnicode); int ilen = WideCharToMultiByte(CP_UTF8, 0, (LPCTSTR)strUnicode, -1, NULL, 0, NULL, NULL); char *szUtf8Temp=new char[ilen + 1]; memset(szUtf8Temp, 0, ilen +1); WideCharToMultiByte (CP_UTF8, 0, (LPCTSTR)strUnicode, -1, szUtf8Temp, ilen, NULL,NULL); //size_t a = strlen(szUtf8Temp); sprintf(szUtf8, "%s", szUtf8Temp);// delete[] szUtf8Temp; return ilen; }
4. GBK to utf-8
void ConvertGBKToUtf8(CString& strGBK) { int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0); unsigned short * wszUtf8 = new unsigned short[len+1]; memset(wszUtf8, 0, len * 2 + 2); MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, wszUtf8, len); len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL); char *szUtf8=new char[len + 1]; memset(szUtf8, 0, len + 1); WideCharToMultiByte (CP_UTF8, 0, wszUtf8, -1, szUtf8, len, NULL,NULL); strGBK = szUtf8; delete[] szUtf8; delete[] wszUtf8; }
5. utf-8 to GBK
void ConvertUtf8ToGBK(CString& strUtf8) { int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0); unsigned short * wszGBK = new unsigned short[len+1]; memset(wszGBK, 0, len * 2 + 2); MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszGBK, len); len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL); char *szGBK=new char[len + 1]; memset(szGBK, 0, len + 1); WideCharToMultiByte (CP_ACP, 0, wszGBK, -1, szGBK, len, NULL,NULL); strUtf8 = szGBK; delete[] szGBK; delete[] wszGBK; }
6. 读写unicode 文件。
wchar_t* ReadUFile(wchar_t* path) { CStdioFileEx fileEx; fileEx.SetCodePage(CP_UTF8); CString sText, sLine; if(fileEx.Open(path, CFile::modeRead | CFile::typeText)) { // Read first 15 lines for (short nLineCount = 0; nLineCount < 16 && fileEx.ReadString(sLine); nLineCount++) { sText += sLine + sNEWLINE; } fileEx.Close(); } return sResult.GetBuffer(sResult.GetLength()); } bool WriteUFile(wchar_t* path,wchar_t* content) { CStdioFileEx fileEx; fileEx.SetCodePage(CP_UTF8); CString sText, sLine; UINT nWriteFlags = CFile::modeCreate | CFile::modeWrite | CFile::typeText; //nWriteFlags |= CStdioFileEx::modeWriteUnicode; if(fileEx.Open(path, nWriteFlags)) { CString scontent = content; fileEx.WriteString(scontent); fileEx.Close(); return true; } else { return false; } }
这里用到了 CStdioFileEx ,下载地址: http://files.cnblogs.com/tingsking/StdioFileEx.zip
7. 发送http 请求
void SendHttp() { CString strData =”cardno=123456&address=张三”; ConvertGBKToUtf8(strData); try { DWORD dwServiceType = AFX_INET_SERVICE_HTTP; CString szServer, szObject; INTERNET_PORT nPort; CString url; GetDlgItemText(IDC_EDIT_ADDRESS,url); AfxParseURL(url, dwServiceType, szServer, szObject, nPort); CInternetSession Session ; CHttpConnection *pHttpConnect = Session.GetHttpConnection(szServer,INTERNET_FLAG_KEEP_CONNECTION,nPort,NULL,NULL) ; if( pHttpConnect ) { CHttpFile* pFile = pHttpConnect->OpenRequest( CHttpConnection::HTTP_VERB_POST, szObject); if ( pFile ) { CString strHead = _T("Content-Type: application/x-www-form-urlencoded") ; pFile->AddRequestHeaders("Accept: */*"); pFile->AddRequestHeaders("Accept-Language: zh-cn"); pFile->AddRequestHeaders("Accept-Encoding: gzip"); pFile->AddRequestHeaders("Accept-Charset: utf-8"); ret = pFile->SendRequest( strHead ,(LPVOID)(LPCTSTR)strData ,strData.GetLength() ); pFile->Close(); delete pFile ; } pHttpConnect->Close() ; delete pHttpConnect ; } } catch( CInternetException *e ) { e->Delete(); } }
相关文章推荐
- 用到了bash的几个知识点,记录一下
- linq 这几天用到的知识点,记录一下加强印象。
- 最近用struts2,遇到几个出错时未能打log的问题,算是小细节吧,记录一下!写代码必须继续坚持良好习惯!
- 最近常用的几个命令 记录一下
- WebUserControl的简单用法,最近的几个项目都反复用到TextBox,CheckBox,RadiobuttonList,所以玩一下webusercontrol,有个投票功能哦。
- 最近在配置LAMP服务器,需要用到vi,所以重新学习整理了一下
- 自己不太熟悉几个知识点,要加强一下。
- js里几个写法,第一次写,记录一下
- 记录一下最近两件事
- 记录一下最近接触到的新技能点,以后填充
- Android Service组件开发用到的几个知识点
- 最近因为项目需要,需要接入友盟的推送,遇到很多问题,记录一下
- 记录最近用到的一个简单的正则表达式
- 记录几个最近遇到的bug
- 记录一下圆周率,最近正在背。
- 记录几个在jvm中频繁用到的参数设置
- 最近在项目中实践了一下Redis,过程中遇到并解决了若干问题,记录之.
- iOS开发 最近开发了蓝牙模块,在此记录总结一下
- 最近的打算,记录一下
- 计算机体系结构几个常用的知识点记录