base64_decode生成包含空字符的字符串

时间:2014-04-15 15:55:17

标签: php string base64

我有一个数据供应商提供给我的以下字符串:

  

RwBVAEkARAAgACgANwBmAGEAZAA4AGEANgBhAGEAOQA3ADAANAAwAGEAYgBiAGUAMQBiAGEAZQBjAGMAZgBiADgAMwA4AGEAMABkACkAIABuAG8AdAAgAGYAbwB1AG4AZAAgAGkAbgAgAFEAIAB0AGEAYgBsAGUALgA =

文档表明它是Base64编码的字符串。当我在这个字符串上运行base64_decode,并查看返回值时,我看到字符串中分布了很多空字符:

  

$encodedString = "RwBVAEkARAAgACgANwBmAGEAZAA4AGEANgBhAGEAOQA3ADAANAAwAGEAYgBiAGUAMQBiAGEAZQBjAGMAZgBiADgAMwA4AGEAMABkACkAIABuAG8AdAAgAGYAbwB1AG4AZAAgAGkAbgAgAFEAIAB0AGEAYgBsAGUALgA="; $decodedString = base64_decode($encodedString); print var_export($decodedString,true);

输出:

  

'G'。 “\ 0”。 '你'。 “\ 0”。 '一世' 。 “\ 0”。 'D'。 “\ 0”。 ''。 “\ 0”。 '('。“\ 0”。'7'。“\ 0”。'f'。“\ 0”。'a'。“\ 0”。'd'。“\ 0”。'8'。“ \ 0“。'a'。”\ 0“。'6'。”\ 0“。'a'。”\ 0“。'a'。”\ 0“。'9'。”\ 0“。' 7'。“\ 0”.'0'。“\ 0”。“4”。“\ 0”。“0”。“\ 0”。“a”。“\ 0”。“b”。“ 0“。'b'。”\ 0“。'e'。”\ 0“。'1'。”\ 0“。'b'。”\ 0“。'a'。”\ 0“.'e '。“\ 0”。'c'。“\ 0”.'c'。“\ 0”.'f'。“\ 0”.'b'。“\ 0”.'8'。“\ 0 “。'3'。”\ 0“。'8'。”\ 0“。'a'。”\ 0“。'0'。”\ 0“。'd'。”\ 0“。')' 。 “\ 0”。 ''。 “\ 0”。 'n'。 “\ 0”。 'o'。 “\ 0”。 't'。 “\ 0”。 ''。 “\ 0”。 'F' 。 “\ 0”。 'o'。 “\ 0”。 '你'。 “\ 0”。 'n'。 “\ 0”。 'd'。 “\ 0”。 ''。 “\ 0”。 '一世' 。 “\ 0”。 'n'。 “\ 0”。 ''。 “\ 0”。 'Q'。 “\ 0”。 ''。 “\ 0”。 't'。 “\ 0”。 '一个' 。 “\ 0”。 'b'。 “\ 0”。 '我'。 “\ 0”。 'e'。 “\ 0”。 '' 。 “\ 0”。 ''

我期望看到的是:

  

在Q表中找不到GUID(7fad8a6aa97040abbe1baeccfb838a0d)。

我现在必须运行字符串替换以消除空字符,以便我可以执行字符串匹配等来评估字符串的内容:

$cleanString = str_replace("\0","",$decodedString);

以下是我的问题:

  1. 直到我最终决定做一个var_export(),print和var_dump都报告了没有空字符的字符串。我明白这些函数不能/不能打印空字符,但是如果没有完成var_export并且在视觉上观察到问题,我怎么能检测到用空字符打包的字符串呢?
  2. 我在编码上追逐了许多红色鲱鱼。 base64_decode是错误的方法吗?无论如何要消除str_replace的附加步骤?
  3. 包含空字符的字符串的技术术语是什么(事实证明PITA过于笼统)?我浪费了太多时间试图描述谷歌我正在看的东西,并认为可能有一个技术描述区分了“正常”的字符串与我一直在处理的这种憎恶。
  4. 非常感谢您的建议。

    Shaheeb R.

0 个答案:

没有答案