Macos 从代码访问.mobileprovision文件
我正试图从我自己的MacOS程序中打开一个.mobileprovision文件,并用Macos 从代码访问.mobileprovision文件,macos,cocoa,permissions,provisioning,Macos,Cocoa,Permissions,Provisioning,我正试图从我自己的MacOS程序中打开一个.mobileprovision文件,并用 [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error]; 文件路径是正确的,我得到了一个有效的文件句柄 当我尝试使用文本编辑打开文件时,一切正常。我可以打开文件,可以阅读里面的文字。它只在代码中起不到作用。然后我得到一个 “…无法使用文本编码Unicode(UTF-8)打开” 错误消
[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
文件路径是正确的,我得到了一个有效的文件句柄
当我尝试使用文本编辑打开文件时,一切正常。我可以打开文件,可以阅读里面的文字。它只在代码中起不到作用。然后我得到一个
“…无法使用文本编码Unicode(UTF-8)打开”
错误消息。问题不在于编码,而是UTF-8。似乎存在安全或权限规则,不允许正确读取文件
有人能解决这个问题吗?也许我需要在我的请求中添加一个权限标志,但我找不到任何与此相关的内容
提前感谢。我在一个txt文件中遇到了同样的问题,并通过将NSUTF8StringEncoding更改为NSUTF8StringEncoding解决了这个问题 可能是您的文件已使用不同类型的编码写入。以下是OSX可用的字符串编码。试试看
NSASCIIStringEncoding = 1, /* 0..127 only */
NSNEXTSTEPStringEncoding = 2,
NSJapaneseEUCStringEncoding = 3,
NSUTF8StringEncoding = 4,
NSISOLatin1StringEncoding = 5,
NSSymbolStringEncoding = 6,
NSNonLossyASCIIStringEncoding = 7,
NSShiftJISStringEncoding = 8, /* kCFStringEncodingDOSJapanese */
NSISOLatin2StringEncoding = 9,
NSUnicodeStringEncoding = 10,
NSWindowsCP1251StringEncoding = 11, /* Cyrillic; same as AdobeStandardCyrillic */
NSWindowsCP1252StringEncoding = 12, /* WinLatin1 */
NSWindowsCP1253StringEncoding = 13, /* Greek */
NSWindowsCP1254StringEncoding = 14, /* Turkish */
NSWindowsCP1250StringEncoding = 15, /* WinLatin2 */
NSISO2022JPStringEncoding = 21, /* ISO 2022 Japanese encoding for e-mail */
NSMacOSRomanStringEncoding = 30,
NSUTF16StringEncoding = NSUnicodeStringEncoding, /* An alias for NSUnicodeStringEncoding */
NSUTF16BigEndianStringEncoding = 0x90000100, /* NSUTF16StringEncoding encoding with explicit endianness specified */
NSUTF16LittleEndianStringEncoding = 0x94000100, /* NSUTF16StringEncoding encoding with explicit endianness specified */
NSUTF32StringEncoding = 0x8c000100,
NSUTF32BigEndianStringEncoding = 0x98000100, /* NSUTF32StringEncoding encoding with explicit endianness specified */
NSUTF32LittleEndianStringEncoding = 0x9c000100 /* NSUTF32StringEncoding encoding with explicit endianness specified */