1. 程式人生 > >Unicode字符集下CString/tchar*與char *轉換 (解決中文亂碼等)

Unicode字符集下CString/tchar*與char *轉換 (解決中文亂碼等)

Unicode環境下寬字元------->窄字元的轉換

定義:TCHAR m_szIp[MAX_IP_LEN];   我們要將TCHANR型別陣列(寬字元型)轉換為char*pBuffer型別(窄字元型): 

方法一:

int nNum=WideCharToMultiByte(CP_ACP,0,m_szIp,-1,0,0,NULL,NULL);
	char* pBuffer=new char[nNum+1];
	WideCharToMultiByte(CP_ACP,0,m_szIp,-1,pBuffer,nNum,NULL,NULL);

方法二:T2A    、W2A
 USES_CONVERSION;
	  char *pBuffer = T2A(m_szIp);

相反,同樣情況下,窄字元--------->寬字元轉換:

方法一:MultiByteToWideChar

方法二:A2T、A2W

下面是對方法一的兩個函式的封裝:

char *WideCharToAnsi(wchar_t *pWideChar)
{
	if (!pWideChar) return NULL;
	char *pszBuf = NULL;
	int needBytes = WideCharToMultiByte(CP_ACP, 0, pWideChar, -1, NULL, 0, NULL, NULL);
	if (needBytes > 0){
		pszBuf = new char[needBytes+1];
		ZeroMemory(pszBuf, (needBytes+1)*sizeof(char));
		WideCharToMultiByte(CP_ACP, 0, pWideChar, -1, pszBuf, needBytes, NULL, NULL);
	}

	return pszBuf;
}


wchar_t *AnsiCharToWide(char *pChar)
{
	if (!pChar) return NULL;
	wchar_t *pszBuf = NULL;
	int needWChar = MultiByteToWideChar(CP_ACP, 0, pChar, -1, NULL, 0);
	if (needWChar > 0){
		pszBuf = new wchar_t[needWChar+1];
		ZeroMemory(pszBuf, (needWChar+1)*sizeof(wchar_t));
		MultiByteToWideChar(CP_ACP, 0, pChar, -1, pszBuf, needWChar);
	}

	return pszBuf;
}


相關推薦

Unicode字符集CString/tchar*char *轉換 解決中文亂碼

Unicode環境下寬字元------->窄字元的轉換 定義:TCHAR m_szIp[MAX_IP_LEN];   我們要將TCHANR型別陣列(寬字元型)轉換為char*pBuffer型別(

Unicode字符集CStringchar *轉換 解決中文亂碼

1、Unicode下CString轉換為char * 方法一:使用API:WideCharToMultiByte進行轉換              CStringstr = _T("D:\\校內專案\\QQ.bmp");             //注意:以下n和l

CentOS 7MySQL5.7的修改字符集編碼為UTF8解決中文亂碼問題

【From:】http://www.2cto.com/database/201311/255324.html 一、登入MySQL檢視用show variables like 'character%';下字符集,顯示如下: 1 2 3 4 5 6 7 8 9 10 11

java十六進位制轉換為字串解決中文亂碼問題

  // 轉化十六進位制編碼為字串 public static String toStringHex2(String s) { byte[] baKeyword = new byte[s.length() / 2]; for (int

Base64 JAVA後臺編碼JS前臺解碼解決中文亂碼問題

中文通過Java後臺進行Base64編碼後傳到前臺,通過JS進行Base64解碼時會出現中文亂碼的問題,被這個問題也是困擾了幾天,使用jquery.base64.js只能轉碼非中文字元,經過蒐集各種方案,最終找到適合自己的解決方案。 Java後臺編碼,這裡用的是org.ap

Unicode字符集CStringchar *轉換

在Visual C++.NET2005中,預設的字符集形式是Unicode,但在VC6.0等工程中,預設的字符集形式是多位元組字符集(MBCS:Multi-Byte Character Set),這樣導致在VC6.0中非常簡單實用的各類字元操作和函式在VS2005環境下執行

CStringchar*轉換Unicode和多位元組字符集

一、使用多位元組字符集 1.CString轉char* (1)傳給未分配記憶體的const char* (LPCTSTR)指標.  CString cstr="ABC"; const char* ch

Cstring char*的轉換,TCHAR char 轉換

使用unicode的會存在寬位元組和單位元組之間的轉換: CString轉char * 1、使用WideCharToMultiByte函式,其中mWcount為CString型別。 char* _wParam = (char*) malloc( siz

MFC 多位元組和UNICODE的相互轉換解決中文utf8-ASCNII亂碼問題

參考連結:http://blog.sina.com.cn/s/blog_73428e9a0102ux6k.htmlhttp://www.cppblog.com/deane/articles/120243.html

【整理】MFC 各種字串型別之間轉換MSDN及其他寫法

各個字母代表意義 L 表示long指標,這是為了相容Windows 3.1等16位作業系統遺留下來的,在win32中以及其他的32為作業系統中, long指標和near指標及far修飾符都是為了相容的作用,沒有實際意義。即win32中,long,near,far指標與普通指標沒有區別,LP 與P是等效的

Ubuntu14.04MySQL 5.6的修改字符集編碼為UTF8徹底解決中文亂碼問題

上一篇文章講解的MySQL安裝、但是安裝好的MySQL資料庫字元編碼有問題,這裡我們需要修改字元編碼。 我們首先講解一下我們安裝好的MySQL。 1、資料庫目錄,其所建立的資料庫檔案都在該目錄下   /var/lib/mysql/  

LinuxMySQL5.6的修改字符集編碼為UTF8解決中文亂碼問題,親測可用!

Linux下MySQL5.6的修改字符集編碼為UTF8(解決中文亂碼問題) 一、登入MySQL檢視用 SHOW VARIABLES LIKE ‘character%’; 下字符集,顯示如下:+--------------------------+--------------

精確查詢模糊查詢檔名、字串

                                            字串查詢常用於搜尋檔案,查詢檔名,今天用到了就來聊聊關於字串的精確查詢與模糊查詢: 1.精確查詢:          精確查詢常用於檔名相似,或者字尾名相似的檔案,如.ali檔案.

地理資料格式轉換geojson、kml

geojson是一種對各種地理資料結構進行編碼的格式,基於JavaScript物件表示法的地理空間資訊資料交換格式。GeoJSON物件可以表示幾何、特徵或者特徵集合。 kml:是一種基於XML語法與

UnicodeCStringchar *轉換

轉載:http://blog.sina.com.cn/s/blog_63106cd80100yq8n.html 在VS2005及以上的環境中,所見工程的預設字符集形式是Unicode,而VC6.0中,字符集形式為多位元組字符集(MBCS: Multi-Byte Character Set),

【MFC】Unicode環境CStringchar*轉換

CString轉const char* const char* CStr2C(CString cstring) { return CW2A(cstring.GetString()); } char*轉CString CString C2CStr(char* cstr) { ret

Unicode字符集CString 轉換char型別

//CString 轉換為char型別,Unicode字符集下 UINT num = WideCharToMultiByte(CP_ACP,0,m_SendData,m_SendData.

VS2015,UNICODE字符集printf,cout列印CString,TRACE輸出中文除錯

下面的測試在中文電腦上"chs"直接使用""替換亦可. CString Str; #include <locale.h> // setlocale函式的標頭檔案 setlocale(LC_ALL, "chs"); // 必加 只有新

MFC中,Unicode和多位元組字符集 CStringchar的轉化

1.unicode下,轉換字串形式為_T("HelloWorld"); 2.MBCS下,轉換字串的形式為"HelloWorld" 多位元組字符集 (MBCS) 是一種替代 Unicode 以支援無法用單位元組表示的字符集(如日文和中文)的方法。為國際市場程式設計時應考慮

Unicode編碼CStringchar*、BSTR相互轉換char*、wchar_t*相互轉換

1、Unicode編碼下CString轉為char* 方法一:使用API:WideCharToMultiByte進行轉換<span style="font-size:18px;">#i