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

來源:互聯網
上載者:User
 

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隨意的轉換字元編碼格式,從而滿足程式中的各種需求。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.