2010-03-23 69 views

回答

0

它支持它,你可以在Lua中的字符串使用Unicode感。它具體取決於你打算做什麼,但大部分限制可以通過用你自己的函數擴展Lua來相當容易地解決。

6

如果你想要一個簡單的答案,它是「yes和no」作爲把鏈接的網站上。

的Lua支持Unicode的方式確定,存儲和查詢字符串任意字節值是支持的,所以你可以存儲任何類型的Unicode編碼編碼字符串在Lua的字符串。

不支持的是unicode字符迭代,unicode字符中沒有字符串長度的標準函數等。因此,更高級別的Unicode支持(如Python中有長度可用,下 - >上大小寫轉換,以任意編碼進行編碼等)不可用。

+5

請注意,http://lua-users.org/wiki/LuaUnicode底部存在鏈接以支持更高級別的Unicode。 – grom 2010-05-25 23:15:14

9

Lua中沒有對Unicode任何支持(不是接受字符串中任何字節的值除外)。但是,庫slnunicode有很多unicode字符串函數。例如unicode.utf8.len

(注:這個答案是完全從另一個問題格羅姆的評論被盜 - 我只是覺得它值得自己的答案)

16

你當然可以在Lua店 unicode字符串,如UTF8。你可以像使用任何字符串一樣使用它們。

然而,Lua並沒有提供任何默認的支持,例如以字符計數字符串長度,轉換成小寫字母,等等。這種不足是否有意義因爲你真的取決於你打算如何處理這些字符串。

可能的方法,這取決於你的使用:

  1. 如果你只想輸入/輸出/存儲字符串,一般把它們作爲「全單位」(爲表索引等),你可能不完全需要特殊處理。在這種情況下,您只需將這些字符串視爲二進制斑點。

  2. 由於utf8的設計巧妙,可以對包含utf8的字符串進行某些類型的字符串操作,並且可以在不需要特別注意的情況下生成正確的結果。例如,您可以追加字符串,在ascii字符之前/之後將它們分開等。例如,如果您有一個字符串"開発.txt"並且您搜索「。」。在字符串中使用string.find (string_var, "."),然後使用普通string.sub功能爲"開発"".txt"拆呢,這些結果字符串將是正確的UTF8字符串,即使你不使用任何一種「支持Unicode的」算法。

    同樣,您可以僅對字符串中的ASCII字符(高位爲零的字符)進行大小寫轉換,並將其餘字符串視爲二進制文件而不將其擰緊。

  3. 一些支持utf8的操作非常簡單,只需編寫自己的函數就可以輕鬆完成操作。

    例如,要計算字符串的Unicode字符長度,只需計算高位爲零(ASCII字符)的字符數和高兩位的字符數11(「前導字節「用於非ASCII字符);長度是這兩者的總和。

  4. 對於更復雜的操作—例如,在非ASCII字符等情況下轉換—你可能不得不使用一個Lua的Unicode庫,比如那些對(前面提到的)Lua-users Unicode page

3

Lua 5.3現已發佈。它配備了a basic UTF-8 library

可以使用utf8庫做的事情有關UTF-8編碼,象得到UTF-8字符串(未字節數作爲string.len)的長度,每一個匹配的字符(而不是字節)等

它不提供編碼以外的本地支持,如這個字符是漢字嗎?