發現開源**的可利用資源真多,從sqlite3的原始碼中摳出了幾個字元轉換介面,稍微改造下了發現還挺好用的。下面是實現**:
/*
** convert a utf-8 string to microsoft unicode (utf-16?).
**** space to hold the returned string is obtained from malloc.
*/static wchar *utf8tounicode(const char *zfilename)
nchar = multibytetowidechar(cp_utf8, 0, zfilename, -1, zwidefilename, nchar);
if( nchar==0 )
return zwidefilename;}/*
** convert microsoft unicode to utf-8. space to hold the returned string is
** obtained from malloc().
*/static char *unicodetoutf8(const wchar *zwidefilename)
nbyte = widechartomultibyte(cp_utf8, 0, zwidefilename, -1, zfilename, nbyte,
0, 0);
if( nbyte == 0 )
return zfilename;}/*
** convert an ansi string to microsoft unicode, based on the
** current codepage settings for file apis.
** ** space to hold the returned string is obtained
** from malloc.
*/static wchar *mbcstounicode(const char *zfilename)
nbyte = multibytetowidechar(codepage, 0, zfilename, -1, zmbcsfilename, nbyte);
if( nbyte==0 )
return zmbcsfilename;}/*
** convert microsoft unicode to multibyte character string, based on the
** user's ansi codepage.
**** space to hold the returned string is obtained from
** malloc().
*/static char* unicodetombcs(const wchar* zwidefilename)
nbyte = widechartomultibyte(codepage, 0, zwidefilename, -1, zfilename, nbyte,
0, 0);
if( nbyte == 0 )
return zfilename;}/*
** convert multibyte character string to utf-8. space to hold the
** returned string is obtained from malloc().
*/static char* mbcstoutf8(const char *zfilename)
zfilenameutf8 = unicodetoutf8(ztmpwide);
free(ztmpwide);
return zfilenameutf8;}/*
** convert utf-8 to multibyte character string. space to hold the
** returned string is obtained from malloc().
*/static char* utf8tombcs(const char *zfilename)
zfilenamembcs = unicodetombcs(ztmpwide);
free(ztmpwide);
return zfilenamembcs;
}std::string mbcstoutf8( const char* pszmbcs )
delete pchar;
}delete pwchar;
} }return str;
}
unicode字元和多位元組字元的相互轉換介面及測試工程
Unicode 和多位元組字符集 MBCS
有些國際市場以大字符集來使用日文和中文等語言。為了支援這些市場的程式設計,microsoft 基礎類庫 mfc 支援以兩種方式處理大字符集 unicode 多位元組字符集 mbcs unicode 字串的 mfc 支援 整個類庫有條件地支援 unicode 字元和字串。特別是 cstring 類也支...
單位元組字符集,多位元組字符集,Unicode
我們在這裡介紹一下字元型別。這裡有3種編碼模式對應3種字元型別。第一種編碼型別是單子節字符集 single byte character set or sbcs 在這種編碼模式下,所有的字元都只用乙個位元組表示。ascii是sbcs。乙個位元組表示的0用來標誌sbcs字串的結束。第二種編碼模式是多位...
Unicode和多位元組字符集 MBCS 雜談
這個估計是很多人曾經頭疼過的問題,現在的vc版本基本都支援unicode和多位元組字符集 mbcs 在進行mfc程式設計時vc的預設設定是unicode字符集。但是我們通常需要做一些 移植的工作,如果將多位元組字符集下的程式 移植到unicode字符集環境中,就需要針對此做出很多態別的轉換,反之亦然...