【问题标题】:Blob data replace '+' with spaceBlob 数据用空格替换“+”
【发布时间】:2011-10-10 15:42:44
【问题描述】:

我有一个 iphone 应用程序,可以将图像转换为 NSData,然后转换为 base64 编码的字符串。

当这个编码字符串在服务器的数据库中提交给服务器时,而存储在服务器上的“+”被转换为“空格”,因此解码器无法正常工作。

我猜问题在于数据库中表的默认编码。目前它是拉丁语,我尝试将其更改为 UTF8,但问题仍然存在。

任何其他编码,请帮助

【问题讨论】:

    标签: iphone mysql character-encoding blob


    【解决方案1】:

    当然——这与编码无关。 POSTGET 参数的格式与 base64 产生冲突。在http://en.wikipedia.org/wiki/Base64#Variants_summary_table 中,您会看到旨在使 base64 与 URL 等一起使用的替代方案。

    其中一个变体是“带有 URL 和文件名安全字母的 Base64(RFC 4648'base64url' 编码)”,它将+ 替换为-,将/ 替换为_

    另一种选择是将有问题的字符 +/= 替换为它们各自的十六进制表示形式 %xx - 但这会使数据不必要地更长。

    【讨论】:

    • :那我该怎么办?我必须更改编码逻辑,或者我必须将此编码字符串转换为 url 编码字符串,以确保像 openssl 这样的通用解码器可以解码我提交的数据?
    • 你可以做任何一个,这取决于你在接收方有什么。替换非常简单,urlencoding 也是如此 - 做最适合您的事情。
    猜你喜欢
    • 2020-11-29
    • 1970-01-01
    • 2016-10-16
    • 2019-03-31
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    相关资源
    最近更新 更多