将Base64解码为UTF-8而不是单字节编码文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Base64解码为UTF-8而不是单字节编码文本相关的知识,希望对你有一定的参考价值。

以下是我尝试过的事情:

在缓冲区中添加了注释:#-*- coding: utf-8; -*-

M-x M-m c,从列表中选择utf-8,然后选择M-xbase64-decode-region

这是缓冲区显示的内容:327252327234 327220327221327231327221。 “应该”展示的是תל אביב。源字符串如下所示:16rXnCDXkNeR15nXkQ==

答案

缓冲区的编码系统指定从文件读取内容时以及将内容写入文件时使用的编码系统。 IOW,你的“编码:utf-8”东西只表示如何解码ASCII源字符串(由于它是ASCII,不需要任何特殊的解码,但是base64字符串可能被非ASCII文本包围)。

你需要的是在打电话给decode-coding-region后打电话给base64-decode-region

编辑

以下是相应的修改:

(defun base64-decode-utf8-region (start end)
  (interactive "r")
  (save-restriction
    (narrow-to-region start end)
    (base64-decode-region (point-min) (point-max))
    (decode-coding-region (point-min) (point-max) 'utf-8)))

(defun base64-encode-utf8-region (start end)
  (interactive "r")
  (save-restriction
    (narrow-to-region start end)
    (encode-coding-region (point-min) (point-max) 'utf-8)
    (base64-encode-region (point-min) (point-max))))

以上是关于将Base64解码为UTF-8而不是单字节编码文本的主要内容,如果未能解决你的问题,请参考以下文章

Base64 编解码

base64编码解码原理

Base 64 原理

C# UTF-8 base64 编码在 PHP 中无法正确解码

xml解析base64字符串丢失问题

BASE64编码解码