如何将字符串转换为utf8编码?

时间:2015-01-09 12:13:20

标签: ios objective-c utf8-decode

我正在阅读我的app目录

NSArray *pathss = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectorys = [pathss objectAtIndex:0];
NSError * error;
NSMutableArray * directoryContents =  [[NSFileManager defaultManager]
                            contentsOfDirectoryAtPath:documentsDirectorys error:&error];

我得到的输出:

"Forms_formatted.pdf",
"fund con u\U0308u\U0308.pdf",
"hackermonthly-issue.pdf",

这些是文件名。我的问题,我怎么能转换这个名字" fund con u \ U0308u \ U0308.pdf"纠正格式。提前谢谢

3 个答案:

答案 0 :(得分:0)

使用UTF-16编码将NSString转换为NSData,转换回UTF-8编码的NSString。 它可能是UTF-16大端,没有BOM。该字符不是ASCII。

字符u \ U0308不是ASCII,它是一个组合变音符号̈ü,该字符也称为上面的双点,变音符号,希腊语dialytika和双重导数。 \ U0308将变音符号置于u字符之上。

答案 1 :(得分:0)

也许这会有所帮助:

NSString *documentsDirectorys = [pathss objectAtIndex:0];
const char *documentsDirectoryCstring = [documentsDirectorys cStringUsingEncoding:NSASCIIStringEncoding];

编辑:

const char *documentsDirectoryCstring = [documentsDirectorys cStringUsingEncoding:NSUTF8StringEncoding];

答案 2 :(得分:-1)

你可以试试这个。 NSLog使用NSArray的描述方法来打印NSArray对象,该对象处理unicode字符的方式与其包含的对象(如NSString对象)的描述不同。或者你可以循环遍历数组并NSLog每个项目。

NSLog(@"%@", [NSString stringWithCString:[[array description] cStringUsingEncoding:NSASCIIStringEncoding] encoding:NSNonLossyASCIIStringEncoding]);