私はCソースを検索するところまで行きましたが、この関数が見つかりません。絶対にそこにあるはずなので、自分で作成したくありません。
詳細に説明すると、UnicodeポイントはU + ########として表されます。これは簡単に取得できます。必要なのは、文字がファイルに書き込まれる形式です(たとえば)。Unicodeコードポイントは、右端のバイトの7ビットが最初のバイトに書き込まれ、次に次のビットの6ビットが次のバイトに書き込まれるようにバイトに変換されます。Emacsは確かにそれを行う方法を知っていますが、UTF-8でエンコードされた文字列のバイトシーケンスをバイトシーケンス(それぞれ8ビットを含む)として取得する方法はありません。
get-byte
またはなどの関数multybite-char-to-unibyte
は、8ビット以下で表現できる文字でのみ機能します。同じことが必要ですget-byte
が、マルチバイト文字の場合、整数0..256の代わりに、整数0..256のベクトルまたは単一の長整数0..2^32のいずれかを受け取ります。
編集
誰かが後でこれを必要とする場合に備えて:
(defun haxe-string-to-x-string (s)
(with-output-to-string
(let (current parts)
(dotimes (i (length s))
(if (> 0 (multibyte-char-to-unibyte (aref s i)))
(progn
(setq current (encode-coding-string
(char-to-string (aref s i)) 'utf-8))
(dotimes (j (length current))
(princ (format "\\x%02x" (aref current j)))))
(princ (format "\\x%02x" (aref s i))))))))