如何解决在base64中发布缺少数据的字符
| 我正在尝试从C#应用程序向我的PHP脚本发送帖子,但base64_decode()
仍然失败。
这是我的帖子尝试发送的字符串:
stWC3F34ABoxsfjbxAWtGU8WUHIombDMd6Z4WXxyOae0 + NlISFHVEATxjE8EFKKMkDnQe0oFu8AvQM9lRaSSMgjYnyZvhXB8EiQDImgrsTmgvwsIeu4qZiW2O6cK4oaPUJIIFnEDlNCstc4s1mzseq0zv0xYPy3tRqbWPXVV9jv9BZiMFGxeVD + OKV / mO0NkVP4UVUMcFOXVCKh5HslVZv59lEqa5C230HSyv17 / W0G1e7q4tBxWEhUwCfbldNtk
当脚本收到它时,\“ + \”替换为\“ \”,所以我使用str_replace()读取它们,然后将输出传递给base64_decode(),但它始终返回false。
这是在将\“ \”替换为\“ + \”之前传递给base64_decode()
的字符串
stWC3F34ABoxsfjbxAWtGU8WUHIombDMd6Z4WXxyOae0 NlISFHVEATxjE8EFKKMkDnQe0oFu8AvQM9lRaSSMgjYnyZvhXB8EiQDImgrsTmgvwsIeu4qZiW2O6cK4oaPUJIIFnEDlNCstc4s1mzseq0zv0xYPy3tRqbWPXVV9jv9BZiMFGxeVD OKV / mO0NkVP4UVUMcFOXVCKh5HslVZv59lEqa5C230HSyv17 / W0G1e7q4tBxWEhUwCfbldNtk
这是在将\“ \”替换为\“ + \”之后传递给base64_decode()
的字符串
stWC3F34ABoxsfjbxAWtGU8WUHIombDMd6Z4WXxyOae0 + NlISFHVEATxjE8EFKKMkDnQe0oFu8AvQM9lRaSSMgjYnyZvhXB8EiQDImgrsTmgvwsIeu4qZiW2O6cK4oaPUJIIFnEDlNCstc4s1mzseq0zv0xYPy3tRqbWPXVV9jv9BZiMFGxeVD + OKV / mO0NkVP4UVUMcFOXVCKh5HslVZv59lEqa5C230HSyv17 / W0G1e7q4tBxWEhUwCfbldNtk
从我的理解中,它应该返回false的唯一原因是该字符串是否包含base64字母之外的字符,但它似乎是有效的base64字符串。
任何帮助表示赞赏。如果无法解决此问题,我将开始发布十六进制字符串而不是base64。
解决方法
在发送字符串之前,您是否正在对字符串进行URLEncode?那应该用加号解决问题。
,您还需要替换任何斜杠字符(
/
),它们代表标准base64编码中的值63。常见用法是将+
转换为-
,并将/
转换为_
。
请参阅http://en.wikipedia.org/wiki/Base64#URL_applications
另外,一些base64解码器要求用8个字符填充字符串,以便字符串的长度是3的倍数。我不知道PHP的9字符是否需要此字符。有关填充的信息,请参见链接的Wikipedia文章。
,尝试在php中使用urlencode
,在C#中使用HttpServerUtility.UrlDecode
编辑:对不起,您想要的是相反的方法:
在C#中为HttpServerUtility.UrlEncode
,在PHP中为urldecode
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。