在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
    

要回复问题请先登录注册