Iphone 如果字符串不';你不需要漂亮吗?

Iphone 如果字符串不';你不需要漂亮吗?,iphone,objective-c,encoding,Iphone,Objective C,Encoding,干杯 我的应用程序需要将NSData对象的内容作为GET请求的参数发送到Web服务器。它应该能够在以后接收相同的数据。数据将以longtext的形式存储在mysql数据库中,内容我不知道,可能几乎是任何东西 要实现这一点,我需要将其转换为NSString,但我应该选择哪种编码?只要两种方法都一样,我选择哪一种就有关系吗 谢谢 只要你使用相同的编码,你就应该很好。在大多数情况下,UTF-8是好的NSUTF8StringEncoding如果确实需要将数据转换为字符串,请使用Unicode编码,因为U

干杯

我的应用程序需要将NSData对象的内容作为GET请求的参数发送到Web服务器。它应该能够在以后接收相同的数据。数据将以longtext的形式存储在mysql数据库中,内容我不知道,可能几乎是任何东西

要实现这一点,我需要将其转换为NSString,但我应该选择哪种编码?只要两种方法都一样,我选择哪一种就有关系吗


谢谢

只要你使用相同的编码,你就应该很好。在大多数情况下,UTF-8是好的
NSUTF8StringEncoding

如果确实需要将数据转换为字符串,请使用Unicode编码,因为Unicode为每个可能的字符提供了一个码点。最常见的unicode编码显然是UTF-8
NSUTF8StringEncoding

但是,如果这是您需要传输的任意数据,并且该数据不表示字符串,不要将其转换为字符串,无论编码是什么。这将导致问题(例如,如果数据包含零字节,则会将其视为字符串终止符等)

相反,如果需要将一些原始数据传输到服务器,请考虑:

  • 如果可能,使用POST而不是GET
  • 在Base64中对数据进行编码,以确保在转换或从客户端传输到服务器期间不会丢失任何数据(或者更糟糕的是,通过转换为任意编码而损坏数据)
  • 如果可能,在您的服务器上(如果它是您的并且您可以访问代码),在接收时将Base64编码字符串解码回原始数据,并将其存储在BLOB字段中,而不是VARCHAR或BIGTEXT字段中
  • 如果无法访问服务器代码,并且没有选择将其存储在数据库中的TEXT/VARCHAR字段中,则仍然可以将表示数据的Base64编码字符串直接存储在数据库中(稍后从数据库中检索时对其进行解码)
有关Objective-C中的Base64编码,请参见Google,其中有大量参考资料涉及广泛使用的NSString+Base64类别。

您应该使用-64编码。有关详细信息/代码,请参见此答案:

GET请求的参数应该是字符串,在理想的(最兼容的)环境中,它们是完全转义的7位ASCII。获取任意数据并将其编码为传统的Unicode字符串编码之一,以便将其放入URL,这将给您带来各种痛苦和神秘的bug


Base-64是为数据字符串编码而设计的。(相对于字符串编码。)

谢谢,吉诃多!我同意AliSoftware的回答,因为他解释得很好,速度更快+1提供链接和其他见解!