unicode字元和多位元組字元的相互轉換介面

2021-07-12 00:57:16 字數 2315 閱讀 2634

發現開源**的可利用資源真多,從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字符集環境中,就需要針對此做出很多態別的轉換,反之亦然...