NSDocumentDictionary:将NSString保存为俄语字符的文件

时间:2014-03-19 18:33:05

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

我有一个可编辑的uitextview,其中用户输入俄语或英语。然后我将此文本保存为文件目录中的.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;

如果我只输入英文,它可以正常工作,但如果我输入俄文字符,则无需保存/显示。

所以,说我输入“hello”它可以工作,但是如果我输入“一些俄语短语”来附加self.textBox.text它就不起作用。

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

1 个答案:

答案 0 :(得分:1)

不推荐使用

writeToFile:atomically:并将字符串写入默认编码 (无论那是什么,可能是MacRoman)。更好地使用

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

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