UTF-8 字节到字符串

UTF-8 bytes to string

我正在尝试将 '(110 111 101 204 136 108) 之类的列表转换为 "noël".

之类的字符串

我尝试使用 (mapcar (lambda (c) (decode-char 'unicode c)) '(110 111 101 204 136 108)),但结果是 (110 111 101 204 136 108),与输入相同。 (此外,我认识到无法从 UTF-8 的单个字节解码 Unicode 字符,因此这绝对是错误的函数。)

几个选项...

(with-temp-buffer
  (set-buffer-multibyte nil)
  (apply #'insert '(110 111 101 204 136 108))
  (decode-coding-region (point-min) (point-max) 'utf-8 t))

或:

(decode-coding-string
 (mapconcat #'byte-to-string '(110 111 101 204 136 108) "")
 'utf-8)

或更直接:

(string-as-multibyte
  (apply #'unibyte-string '(110 111 101 204 136 108)))