UTF8的編碼規則:
1. 字符的第一個字節范圍: 0x00—0x7F(0-127),或者 0xC2—0xF4(194-244); UTF8 是兼容 ascii 的,所以 0~127 就和 ascii 完全一致
2. 0xC0, 0xC1,0xF5—0xFF(192, 193 和 245-255)不會出現在UTF8編碼中
3. 0x80—0xBF(128-191)只會出現在第二個及隨后的編碼中(針對多字節編碼,如漢字)
這樣我們可以利用lua強大的模式匹配,來實現我們要的效果,關鍵的處理有這么兩個:
1. local _, count = string.gsub(str, "[^/128-/193]", ""),用來得到str中的字符數
2. for uchar in string.gfind(str, "[%z/1-/127/194-/244][/128-/191]*") do tab[#tab+1] = uchar end,用來把str中的每個字符映射到tab中
新聞熱點
疑難解答