C++基礎(chǔ):在LUA中使用UNICODE字符串

字號(hào):

今天測(cè)試用LUA調(diào)用windows的MessageBoxW函數(shù)。需要在LUA中定義UNICODE字符串。LUA的string類型為8位編碼,包括數(shù)值0,可以編碼任意二進(jìn)制數(shù)據(jù)。如果編碼UNICODE,則需要使用"\"轉(zhuǎn)義序列。如字符串"LUA"如果使用UNICODE 在LUA中表示為: text = "\076\000\085\000\065\000"如果字符串很長(zhǎng),也可以使用TABLE的方式來表示:
    text = table.concat{"\076\000","\085\000","\065\000"} 我編寫的LUA程序如下,win32.dll目前僅包含MessageBoxW一個(gè)函數(shù):
    -- test_win32.lua
    require "win32"
    local title = table.concat{"\084\000","\104\000","\105\000","\115\000","\032\000",
    "\105\000","\115\000","\032\000","\097\000","\032\000",
    "\116\000","\101\000","\115\000","\116\000"}
    local text = table.concat{"\069\000","\110\000","\103\000","\108\000","\105\000",
    "\115\000","\104\000","\013\000","\010\000","\073\108",
    "\087\091","\013\000","\010\000","\092\213","\109\173",
    "\180\197","\013\000","\010\000"}
    win32.MessageBoxW(0,text,title,0)
    為了在LUA中方便的編寫UNICODE字符串,我使用WTL編寫了一個(gè)LUA用UNICODE轉(zhuǎn)換程序,支持unicode->lua(table)和lua(table)->unicode的雙向轉(zhuǎn)換。
    下載地址:
    http://www.cppblog.com/Files/visualfc/lua_uni.zip
    壓縮包中包括了LUA_UNICODE的源代碼,源碼中的BIN目錄中包括編譯好的可執(zhí)行文件和LUA腳本。
    LUA_UNI程序使用WTL編寫,在VS60下使用VisualFC插件設(shè)計(jì)完成。
    LUA_UNICODE程序界面如下: