string - 从 lisp 中的八位字节解码单个字符

标签 string unicode lisp common-lisp

如何从普通 lisp 中的八位字节向量中解码单个字符?

我想要这样的东西:

(decode-character vector :start i :encoding :utf-8)

或更具体地说:

(decode-character #(195 164 195 173 99 195 176) :start 0)
=> #\LATIN_SMALL_LETTER_A_WITH_DIAERESIS

这将返回 vector 中从位置 i 开始的 UTF-8 编码字符。

我不知道如何使用 babel 或 flexi-streams 来做到这一点。

最佳答案

(defun decode-character (vector &rest args)
  (char (apply #'babel:octets-to-string
               (coerce vector '(vector (unsigned-byte 8))) args)
        0))

关于string - 从 lisp 中的八位字节解码单个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33188958/

相关文章:

在包含 unicode 字符串的列表上调用 remove() 时,Python 给出 UnicodeWarning

python - 将文本文件读入变量,后续 print() 返回转义字符?

lisp - Lisp 中的未绑定(bind)变量错误

Java一次替换字符串中的多个不同子字符串(或以最有效的方式)

javascript - 过滤不包含来自其他数组的字符串的字符串?

c# - 什么是线程安全 (C#)? (字符串,数组,...?)

android - 新的卢比符号的 unicode 不会显示在 Android 模拟器上

排序算法 lisp-scheme

lisp - 如何在常见的 lisp 中格式化单个反斜杠?

java - 一次替换所有出现的子字符串