gpt4 book ai didi

iphone - 使用 writeToFile :atomically:encoding:error: vs. createFileAtPath:contents:attributes: 时的不同编码结果:

转载 作者:行者123 更新时间:2023-12-03 17:16:59 24 4
gpt4 key购买 nike

在我的 iPhone 应用程序中,我能够将数据导出到 .txt 文件并通过邮件发送 - 但目前在编码方面存在问题。

要将文件附加到邮件,我只需从 NSString 实例创建一个 NSData 实例,如下所示:

NSData *dataToExport = [[NSData alloc] initWithData:[myExportString dataUsingEncoding:NSUTF8StringEncoding]];
[[NSFileManager defaultManager] createFileAtPath:pathToExportFile contents:dataToExport attributes:nil];

但这最终会产生一个包含类似内容的文件(编码错误):

√úberraschung

改为使用

[myExportString writeToFile:pathToExportFile atomically:NO encoding:NSUTF8StringEncoding error:&error];

...创建一个具有正确编码的文件:

Überraschung

有什么想法吗,我如何能够通过第一种方式获得正确的编码?

谢谢你,弗洛里安

最佳答案

NSString 的 writeToFile:atomically:encoding:error: 方法在输出文件上设置一个扩展属性来标识编码。 TextEdit 检查此属性并在存在时使用该编码。

由于您没有(也不能)告诉 NSFileManager 的方法要使用什么编码(因为它用于纯数据,不一定是编码为数据的文本),所以它不会设置此属性。没有它,TextEdit 就会猜测,而且效果很差。

我不知道 MobileMail 是否会以某种方式保留扩展属性。尝试两种方法,当您收到消息时,检查其原始内容并查看其中一种是否指定了文件的编码。无论如何,您的十六进制转储证明文本无论哪种方式都已正确编码。

更一般地,当您想要将文本写入文件时,NSString 的方法是正确的解决方案。

关于iphone - 使用 writeToFile :atomically:encoding:error: vs. createFileAtPath:contents:attributes: 时的不同编码结果:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3965599/

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