【问题标题】:base64 decoding issue (special character?)base64 解码问题(特殊字符?)
【发布时间】:2016-05-05 07:44:34
【问题描述】:

我从一封电子邮件的正文中提取了这个:

txt <- "PHRhYmxlIGFsaWduPSJjZW50ZXIiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBzdHlsZT0icGFkZGluZy10b3A6IDEwcHg7IiB3aWR0aD0iNjEycHgiPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNjEycHgiIGhlaWdodD0iMTM2cHgiIHN0eWxlPSJsaW5lLWhlaWdodDogMDtwYWRkaW5nOjA7Ij48aW1nIHNyYz0iaHR0cHM6Ly9kMjZraHJ2OHhkNW9hYS5jbG91ZGZyb250Lm5ldC9lZG0vYmdfbG9nb19kZWZhdWx0XzYxMngxMzYuZ2lmIiB3aWR0aD0iNjEycHgiIGhlaWdodD0iMTM2cHgiIC8-PC90ZD4KCTwvdHI-CQoJPHRyPgoJCTx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjYxMnB4IiBzdHlsZT0ibGluZS1oZWlnaHQ6IDA7cGFkZGlu"

(出于保密原因,我将消息删减为 500 个字符)

我需要把它转换成html。

txt = substr(txt,1,500)  
RCurl::base64Decode(txt = txt)

但是,这只是信息的第一部分:

<table align=\"center\" cellspacing=\"0\" border=\"0\" cellpadding=\"0\" style=\"padding-top: 10px;\" width=\"612px\">\n\t<tr>\n\t\t<td width=\"612px\" height=\"136px\" style=\"line-height: 0;padding:0;\"><img src=\"https://d26khrv8xd5oaa.cloudfront.net/edm/bg_logo_default_612x136.gif\" width=\"612px\" height=\"136px\"

似乎有一个特殊字符会造成问题,但我找不到确切的问题。是不是ISO/UTF编码的问题?

注意:如果我使用带有 ISO-8859-1 的在线工具 https://www.base64decode.org/,我会得到更多字符(尽管解码字符对我来说没有意义)

<table align="center" cellspacing="0" border="0" cellpadding="0" style="padding-top: 10px;" width="612px">
<tr>
    <td width="612px" height="136px" style="line-height: 0;padding:0;"><img src="https://d26khrv8xd5oaa.cloudfront.net/edm/bg_logo_default_612x136.gif" width="612px" height="136px" /ÝOÝ ÇG#à ÇFBfÆvãÒ'F÷"vGFÒ#c'"7GÆSÒ&ÆæRÖVvC¢·FF

【问题讨论】:

  • 我使用rawToChar(RCurl::base64Decode(txt = txt, mode = "raw")) 获得了更多字符,但出现了错误。
  • @Pascal 此处相同,但多余的字符很奇怪(/\017\v\335\031\017\202\202O\v\335\034\200\220\240\223\ 307G#\340\240\220\223\307FB\af\026\306\226v\343\322'F\367\002"\av\226GF\203\322#c\023'\a\202"\ a7G\226\306S\322&\306\226\346R\326\206V\226v\207C\242\003\003\267\006\026FF\226\346s\243\003\262($$$\361\ 321\205\211\261\224) 。因此我想知道是否有办法指定字符的 ISO?
  • 我看到&lt;table align="center" cellspacing="0" border="0" cellpadding="0" style="padding-top: 10px;" width="612px"&gt;\n\t&lt;tr&gt;\n\t\t&lt;td width="612px" height="136px" style="line-height: 0;padding:0;"&gt;&lt;img src="https://d26khrv8xd5oaa.cloudfront.net/edm/bg_logo_default_612x136.gif" width="612px" height="136px"\0\x80\xbc&lt;/td&gt;\n\t&lt;/\001\xd1\xc8\t\n\t&lt;tr&gt;\n\t\t&lt;td valign="top" width="612px" style="line-height: 0;paddin
  • @Pascal getOption("encoding")Sys.getlocale("LC_CTYPE") 在您的计算机上返回什么?
  • 好问题。分别为"native.enc""en_US.UTF-8" (Ubuntu 14.04)。

标签: r base64 ascii mime-types mime


【解决方案1】:

我发现 R 中不同的 base 64 解码函数在我的示例中表现不同:

*RCurl::base64Decode(txt) 只返回文本的第一部分。 *paste(rawToChar(base64enc::base64decode(txt), multiple = TRUE),collapse="") 正在返回奇怪的字符
*gmailr:::base64url_decode_to_char 是唯一一个在我的情况下可以正常工作的人

【讨论】:

    猜你喜欢
    • 2016-02-05
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多