我有UTF7解码的问题。我能够找出问题,创建以下示例代码:
NSStringEncoding stringEncoding = myFunctionForTranslateCodepageToEncoding(codePage);
// see the end of the string, it's important
const char * testBuffer ="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa+ADw-";
NSString * testString = [[NSString alloc] initWithBytes:testBuffer length:strlen(testBuffer) encoding:stringEncoding];
其中:
strlen(testBuffer)是508,
'codePage'是65000,
'stringEncoding'是2214592768(可能是UTF-7,正如预期的那样,但我找不到明确的确认......)。
'+ ADw-'是'<'。
的UTF7序列在此示例中,testString始终为nil,因此转换失败。 但这里有一些奇怪的事情:
我也尝试用initWithCString替换initWithBytes:方法。我没有检查所有可能的情况,但在所有测试的情况下,它的行为与initWithBytes相同:我在iOS 6.0上进行了测试。
您对如何正确处理UTF7编码的字符串有什么想法吗?