【问题标题】:issue in encoding a string with percent escaping iphone使用百分比转义 iphone 编码字符串的问题
【发布时间】:2013-02-28 09:57:05
【问题描述】:

这是我的字符串。

NSString *str=@"A & B";

现在我将其转换为 NSUTF8StringEncoding。

str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"str: %@", str);

空格被替换为 %20 但 & 没有被替换为 %26。

nslog 显示

str: A%20&%20B

这也不行

NSString *str=@"(A) & (B)";
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"str: %@", str);

nslog 显示

str: (A)%20&%20(B)

我需要这个,因为我必须将它作为 web 服务中的参数值传递。 任何人都有这个想法。请帮我解决这个问题。好的答案将不胜感激

【问题讨论】:

  • 该过程称为URL Encoding,与UTF-8无关。我也没有明白你的实际问题是什么?
  • 感谢您回答木马。是的,我确实想要 url 编码。我提到“我需要这个,因为我必须在 web 服务中将它作为参数值传递。”
  • 但是你的问题的标题没有提到它,你也没有说你遇到了什么问题。
  • 是的,您绝对“将其转换为 NSUTF8StringEncoding”。您正在添加百分比转义,使用 UTF-8 进行 他们的 编码

标签: iphone ios ipad nsstring nsurl


【解决方案1】:

您可以使用CFURLCreateStringByAddingPercentEscapes() 来做到这一点:

NSString *string = ...;
NSString *encodedString = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8));

【讨论】:

  • CFURLCreateStringByAddingPercentEscapes()[NSString stringByAddingPercentEscapesUsingEncoding:] 有何不同?
  • 嗯,你可以传递一串你想转义的字符。 ;)
猜你喜欢
  • 2011-03-26
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 2011-07-02
相关资源
最近更新 更多