一般常用的並且容易造成混淆的
locale有3
種:system locale, user locale, thread locale
1.system locale
:系統區域設定。決定了非
unicode
程式所使用的**頁,如下:
對應的code page
可以用getacp
和getoemcp
來獲得。
system locale
無法被api
修改,但是可以用
getsystemdefaultlcid
和getsystemdefaultlangid
獲得。lcid
和langid
後面會解釋。 2.
user locale
:使用者區域設定,決定了各種標準和格式的定義,如數字,日期等,如下:
是不能被
api修改的,只能由使用者設定。可以通過
getuserdefaultlcid
和getuserdefaultlangid
獲得。同樣的,區別後面會提到。 3.
thread locale
:執行緒相關的區域。初始值為當前的
user locale
,可以使用
getthreadlocale
和setthreadlocale
獲取和修改。
1.langid:
language id
,也就是語言
id。代表不同的語言,比如
english
,chinese
,等等。
lang id (16 bit)=primary language id(10 bit) + sub language id(6 bit)
,如下:
sub language id:6
primary language id:10
primarylanguage
代表主語言,比如英語
sub language
代表子語言,也就是語言的亞種,如美式英語
(en-us)
,或者英式英語
(en-gb)
,對應的子語言為
us/gb。
2.lcid:
locale identifier
,代表locale
資訊,等價於
langid (16 bit) + sort id (4bit) + reserved (12)
,如下:
reserved : 16
sort id : 4
lang id: 16
extern capihook g_multibytetowidechar;
// 注意winapi 必須和原來的程式一樣!!
int winapi hook_multibytetowidechar(
uint codepage, // code page
dword dwflags, // character-type options
lpcstr lpmultibytestr, // string to map
int cbmultibyte, // number of bytes in string
lpwstr lpwidecharstr, // wide-character buffer
int cchwidechar // size of buffer
)77ea8b1f |. e8 8987ffff call kernel32.getuserdefaultlcid ; [getuserdefaultlcid
終於讓fat格式的U盤不再顯示亂碼了
我使用的ubuntu 8.04.1,kde4.1.2桌面環境,一直以來存在乙個問題,如果掛載fat檔案格式的u盤或者可行動硬碟時,中文資料夾和檔案的名字就變成了一堆的?在網上查閱了很多的資料,目前找到了一下這個可行的解決方案。修改 usr share hal fdi policy 10osvendo...
如何讓Toast訊息在應用退出後不再顯示
android中toast的訊息是放在乙個佇列中的,系統會依次從佇列中取出並顯示。而我們在應用中,有時候希望在應用退出後不再顯示還未顯示過的toast訊息。比如,在 中訪問某個網路介面,待其返回後給出相應的toast資訊提示使用者,然而有時候我們應用已經退出 或不再前台 了,還沒有返回結果,但仍然會...
讓你的應用程式不再對的改動「感冒」 二
使用聯接檢視實現複雜的需求 使用乙個聯接的檢視把前面的例子帶到更高的層次 允許我們的應用訪問多個表的資訊。擴充套件前面的例子 dropviewhr.bv employees createorreplaceviewhr.bv employees empid,fname,lname,email,hire...