2011-05-05 71 views
1

喜看不懂的法國口音(如「E」)在一個文本文件, 這是一段代碼,我用它來打開和讀取文件...閱讀文本文件法國字符

FILE* file = fopen([MyFileName UTF8String], "r, ccs=UTF-8"); 
if (file != 0) 
{ 
    while(fgets(buffer, 1024, file) != NULL) 
    {  
     NSString* string = [[NSString alloc] initWithCString: buffer]; 
     //Do many things..... 
    } 
    fclose(file); 
} 

我看不到問題出在哪裏,我的文件正確編碼爲UTF8 ...

謝謝!

+1

會發生什麼?當它到達'é'時,它是否會讀取「foobar」?它會崩潰嗎?它響起了蜂鳴器嗎?它會擦除您的文件內容嗎? ... – pmg 2011-05-05 18:39:29

+0

它讀取像%#的奇怪字符.... – Maxime 2011-05-05 18:42:03

+0

所以,我的猜測是輸入是UTF-8,但輸出不是。你是如何檢查奇怪的字符? – pmg 2011-05-05 18:43:46

回答

1

而不是fopenfgets您可以直接使用stringWithContentsOfFile:usedEncoding:error:方法讀取NSString中的文件內容。

NSString *fileContent = [NSString stringWithContentsOfFile:myFilePath usedEncoding:NSUTF8StringEncoding error:NULL]; 
2

c中的fgets函數只有ASCII,您需要使用fgetws。這是用於多字節編碼的fgets的廣泛版本。

+0

好吧,但是當我嘗試使用fgetws函數時,在編譯期間出現錯誤,您是否有此函數的示例。謝謝! – Maxime 2011-05-05 19:04:07

+0

Taskinoor的答案解決了您的問題,還是您仍然喜歡示例? fgetws是相當不愉快的工作。 – 2011-05-05 19:51:04