2010-01-06 75 views
0

我打開一個包含語言數據的文本文件並將其讀入字典。該代碼檢索所有數據,但我無法獲得正確的編碼。文本文件中的字符(例如「Â」)會被翻譯爲「√Ç」而不是「å」。Iphone:encoding problem

我真的開始被這個問題得到真正惹惱了,我真的很感激,如果有人可以幫助我......

CODE:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *path = [[NSBundle mainBundle] pathForResource:[defaults objectForKey:@"language"] 
                ofType:@"properties"]; 

    NSMutableDictionary *languageDictionary = [[NSMutableDictionary alloc] init]; 

    char character[1024]; 
    FILE *languageData = fopen([path cStringUsingEncoding:NSISOLatin1StringEncoding], "r"); 
    if (languageData == NULL) NSLog([path stringByAppendingString:@" not found"]); 
    else 
    { 
     //check if end of line flag is set, and end while if so 
     while (!feof(languageData)) 
     { 
      fgets(character, 1024, languageData); 
      NSString *stringFromChar = [NSString stringWithCString:character length:strlen(character)]; 
      NSArray *stringFromCharArray = [stringFromChar componentsSeparatedByString:@" = "]; 

      if(2 == [stringFromCharArray count]) 
      { 
       [languageDictionary setObject:[stringFromCharArray objectAtIndex:1] forKey:[stringFromCharArray objectAtIndex:0]]; 
      } 

     } 

     fclose(languageData); 
    } 
+1

你知道編碼的意思是什麼嗎? – 2010-01-06 07:55:44

+0

不,我不'噸:(是不是我是誰寫的語言文件,我不'噸知道有什麼方法找到它.. – Madoc 2010-01-06 07:57:39

+2

打開在Xcode的文件,做一個CMD,我看到的編碼是什麼。我的其他字母文件,如日文,是UTF-16。 – mahboudz 2010-01-06 08:10:39

回答

1

你不應該做:

 NSString *stringFromChar = [NSString stringWithCString:character encoding: NSUTF16StringEncoding]; 

否則你加載你的字符串作爲8位字符...

+0

感謝您的提示,但我得到了相同的結果:( – Madoc 2010-01-06 08:50:02

1

找出什麼該文件的編碼是(XCode:cmd + i,您選擇的Texteditor:另存爲),然後嘗試使用適當的NSString方法/編碼描述here