gpt4 book ai didi

UTF16 中的 iOS NSString

转载 作者:行者123 更新时间:2023-11-28 18:25:53 24 4
gpt4 key购买 nike

我有一个通过 HTTP 从 Apache 服务器获取的字符串:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
...

我需要将该字符串设为 UTF16 字符串。我不想把它变成 NSData。我需要保留它 NSString 并且我需要它在 UTF16 中。我什至很乐意将它放在 NSData 对象中,如果我可以将它作为 UTF16 来做的话。我现在正在做类似的事情:

[self.returnedData appendData:data];

但这仍将其作为 UTF8 传输。这可能很简单,我想念它。但是我没有在 Apple 文档或这个站点中找到它,而且我的 Google-Fu 也让我失望了。我错过了什么?我怎么做?感谢您的宝贵时间和帮助。

编辑:好的。你和贾斯汀所说的一切都很有道理,而且让事情变得更有意义。所以这就是我正在做的。从这一行来看似乎是正确的,但我想确保我正确地理解了你。

NSData *resultData = [self. result dataUsingEncoding:NSUTF16LittleEndianStringEncoding];
NSString *resultStr = [[NSString alloc] initWithData:resultData encoding:NSUTF16LittleEndianStringEncoding];
NSString *md5Result = [[NSString stringWithFormat:@"%@",[resultStr MD5]] uppercaseString];
NSLog(@"md5Result = %@",md5Result);

最后一部分是我对 UTF-16 之后的字符串所做的处理。我有一个类别,使其成为类似于 http://blog.blackwhale.at/?tag=hmac 的 MD5 十六进制字符串再次感谢。我会撞到你们两个,并说这是正确的答案。

最佳答案

一个字符串就是一个字符串就是一个字符串。编码是指它如何编码和解码到 NSData 和从 NSData 解码。 @"blah"与@"blah"相同。两者都没有 UTF8 或 UTF 16。

已添加所以你可以做 [@"myString"dataUsingEncoding:NSUTF16StringEncoding];

如果你把它转换回一个字符串,你仍然会有@"myString"

回答下面评论中的最后一个问题。因此,当您 POST 到服务器时,服务器主体是编码数据。所以你想做的就是对字符串做任何你想做的事。然后使用特定编码将字符串转换为数据,在您的情况下,NSUTF16StringEncoding 或 NSUTF16LittleEndianStringEncoding。您不是在创建 UTF-16 字符串。您正在将 unicode 字符串转换为 UTF-16 编码数据。这就是你需要做的。

NSData *postBody = [[[self.result MD5] uppercaseString] dataUsingEncoding:NSUTF16LittleEndianStringEncoding];

如果您需要向 postBody 添加更多数据,请改为创建 NSMutableData 并根据需要附加新数据。

关于UTF16 中的 iOS NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9610498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com