简体   繁体   English

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

[英]How to convert string to utf8 encoding?

I am reading my app directory like this 我正在这样读取我的应用程序目录

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

the output i get: 我得到的输出:

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

these are the files name. 这些是文件名。 my question, how come i able to convert this name "fund con u\\U0308u\\U0308.pdf" to correct format. 我的问题是,我怎么能将这个名称“ fund con u \\ U0308u \\ U0308.pdf”转换为正确的格式。 thanks in advance 提前致谢

Convert the NSString to NSData with UTF-16 encoding, convert back to a NSString with UTF-8 encoding. 使用UTF-16编码将NSString转换为NSData,使用UTF-8编码将其转换回NSString。 It is probably UTF-16 big endian with no BOM. 它可能是没有BOM的UTF-16大端。 The character is not ASCII. 该字符不是ASCII。

The character u\\U0308 is not ASCII, it is a Combining Diacritical Mark ̈ü, the character is also known as double dot above, umlaut, Greek dialytika and double derivative. 字符u \\ U0308不是ASCII,它是一个组合变音标记̈ü,该字符也被称为上方的双点,变音符号,希腊方言和双导数。 The \\U0308 puts the umlaut above the u character. \\ U0308将变音符放在u字符上方。

Maybe this will help: 也许这会有所帮助:

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

EDIT: 编辑:

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

You can try this. 你可以试试看 NSLog use description method of NSArray to print NSArray object, which deals with unicode characters differently than the description on objects its contains such as NSString objects. NSLog使用NSArray描述方法来打印NSArray对象,该对象处理Unicode字符的方式与对其包含的对象(如NSString对象)的描述不同。 Or you can loop through the array and NSLog each item. 或者,您可以遍历数组并NSLog每个项目。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM