utf8lib.char: |
  接收零个或多个整数，将每个整数转换为对应的 UTF-8 字节序列，并返回将这些序列连接在一起的字符串。

utf8lib.charpattern: |
  模式（一个字符串，而非函数）`[\0-\x7F\xC2-\xF4][\x80-\xBF]*`，
  在假定被匹配对象是合法 UTF-8 字符串的情况下，它精确匹配一个 UTF-8 字节序列。

# 
# Returns values so that the construction
# > `for p, c in utf8.codes(s) do` *body* `end`
# will iterate over all characters in string `s`, with `p` being the position
# (in bytes) and `c` the code point of each character. It raises an error if
# it meets any invalid byte sequence.
utf8lib.codes@@1: ""

# 
# Returns the codepoints (as integers) from all characters in `s` that start
# between byte position `i` and `j` (both included). The default for `i` is
# 1 and for `j` is `i`. It raises an error if it meets any invalid byte
# sequence.
utf8lib.codepoint@@1: ""

# 
# Returns the number of UTF-8 characters in string `s` that start between
# positions `i` and `j` (both inclusive). The default for `i` is 1 and for
# `j` is -1. If it finds any invalid byte sequence, returns a false value
# plus the position of the first invalid byte.
utf8lib.len@@1: ""

utf8lib.offset: |
  返回 `s` 中第 `n` 个字符的编码起始位置（按字节计）（从位置 `i` 开始计数）。
  负的 `n` 表示取 `i` 之前的字符。

  `n` 非负时，`i` 的默认值为 1；否则 `i` 的默认值为 `#s + 1`，因此
  `utf8.offset(s, -n)` 可获得从字符串末尾数第 `n` 个字符的偏移。

  如果指定字符既不在字符串中也不在其末尾紧接处，则函数返回 nil。
  特殊情况：当 `n` 为 0 时，函数返回包含 `s` 的第 `i` 个字节的那个字符的编码起始位置。

  此函数假定 `s` 是合法的 UTF-8 字符串。

