【问题标题】:NSDocumentDictionary: Saving NSString as file for Russian charactersNSDocumentDictionary:将 NSString 保存为俄语字符的文件
【发布时间】:2014-04-26 05:51:55
【问题描述】:

我有一个可编辑的 uitextview,用户可以在其中输入俄语或英语。然后我将此文本保存为 files 目录中的 .txt 文件,稍后再阅读。

这里是保存文本的部分

-(IBAction)saveText:(id)sender{


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"testing.txt"];
    [self.textBox.text writeToFile:path atomically:YES];
    NSLog(path);

}

有一个单独的按钮可以在弹出窗口中显示此文本:

-(IBAction)readText:(id)sender{

    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"testing.txt"];
    NSError *error = nil;
 myText = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
    NSLog(@"myText: %@", myText);
    self.textBox.text= myText;
    }

在 .h 文件中使用此声明

NSString *myText;

如果我只输入英语,它工作得很好,但如果我输入俄语字符,那么什么都不会保存/显示。

所以,假设我输入“你好”它可以工作,但如果我输入“一些俄语短语”来附加 self.textBox.text 它不起作用。

如何使这个俄语(或 UTF8/charcode)兼容?

【问题讨论】:

    标签: ios objective-c utf-8 nsstring nsdocumentdirectory


    【解决方案1】:

    writeToFile:atomically: 已弃用,并以默认编码写入字符串 (无论如何,可能是MacRoman)。更好用

    [self.textBox.text writeToFile:path
                        atomically:NO
                          encoding:NSUTF8StringEncoding
                             error:&error];
    

    将字符串写入UTF-8编码。

    【讨论】:

    • 马丁说了什么。我正要回答同样的问题,但他抢了我。请注意您从编译器获得的不推荐使用的方法警告。 Apple 通常出于充分的理由弃用方法(例如 writeToFile:atomically 不允许您指定编码。
    • Martin R 和 Duncan C 谢谢,这解决了问题。我将不得不更加注意警告......
    猜你喜欢
    • 1970-01-01
    • 2013-02-02
    • 2016-05-09
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多