Lua 處理 UTF-8 字串

Posted on Mon 17 October 2016 in note • Tagged with lua, utf8

最近要用 Lua 處理 UTF-8 字串,但是 Lua 到了 5.3 才開始支援 UTF-8。

UTF-8 字串長度及複製

我的需求很簡單,只要判斷字串長度及類似 strncpy 的字串複製。所以直接利用 Lua 5.3 手冊 提到的 charpattern 來進行字串的操作。

[\0-\x7F\xC2-\xF4][\x80-\xBF]*

utf8len

function utf8len(s)
    _, len = string.gsub(s, '([\0-\x7F\xC2-\xF4][\x80-\xBF]*)', '%1')
    return len …

Continue reading

MySQL 設定 utf8 為預設 charset

Posted on Wed 13 February 2013 in note • Tagged with mysql, utf8, utf8mb4, unicode

因為 debian 預設還是 latin1 所以找了一下如何設定。有一種設定在 5.5.x(不確定哪一版開始) 之後會讓 mysqld 開不起來。

[mysqld]
default-character-set = utf8

上面這個設定是錯的,底下才是對的。

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init-connect = 'SET NAMES utf8mb4'

mysqld 的部分不能用 default-character-set

找了一下資料才發現 utf8utf8mb4 不同。MySQL 中 utf8mb4 才能完全紀錄 unicode 的碼點。 可以參考 …


Continue reading