CEGUI學習筆記三-- 如何顯示中文

CEGUI使用utf8編碼格式。這就意味着我們可以很簡單的就顯示中文。

1、弄個包含中文的字體,在這裏我借用大多數例子裏的 “C:/windows/Font/simhei.ttf”文件。把這個文件拷貝到Datafiles文件夾的Font文件夾裏。

2、隨便照着一個 .Font文件,自己寫一個simhei.font文件。可以用TXT寫,然後保存,有的朋友說需要保存爲utf8編碼格式,實際上是不需要的。

3、同時注意修改你加載到程序裏的scheme文件,將裏面的字體文件設置成simhei.ttf。你也可以繼續使用FirstWindow這個例子,這樣的話直接修改源代碼裏的字體爲simhei.tff。

4、現在在程序裏進行字符編碼轉換,我拿代碼說明問題:


std::wstring aa = L"123中文abcあいうえお";
char buff[128] = "";
WideCharToMultiByte( CP_UTF8, 0, aa.c_str(), aa.size(), buff, sizeof(buff), 0, 0);
button1->setText ( CEGUI::String ( CEGUI::utf8* )buff );

原理是這樣的,對於utf8來說,英文字符和ansi編碼 在內存佈局上沒什麼區別,都是一個UCHAR。但是對於非英文字符,則是UCHAR+UCHAR+UCHAR。如果我們手工進行編碼格式轉換,會比較煩瑣。

比較偷懶的方法就是,我們先用WCHAR(unicode內存佈局,UCHAR+UCHAR+UCHAR+UCHAR)來儲存需要顯示的字符串,然後調用Win32API來幫我們把寬字符轉換成char(多字節字符集內存佈局)。

這就是基本方法了,然後我們可以根據這個轉換方針,利用Win32API隨意的轉換字符編碼格式,從而滿足程序中的各種需求。

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/kun1234567/archive/2008/04/11/2282761.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章