微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在base64中发布缺少数据的字符

如何解决在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 举报,一经查实,本站将立刻删除。