2010-02-04 85 views
1

我正在使用xml解析器來填充數組。此字符串:'Calle Mare deDéude'在[NSPlaceholderString initwithstring:]處產生異常。在Snow Leopard(10.6)上,它在Leopard(10.5)上報告了一個零的參數,但它引發了一個異常,但報告沒有錯誤。NSString是否支持非標準/非英文字符?

當我用'Calle Mare de Deu de'替換字符串'Calle Mare deDéude'時,它可以正常工作。問題是由'é'字符引起的。

NSString不支持這個和其他特殊字符嗎?

感謝 迪皮卡

+0

這個問題很難理解,你可以嘗試進一步澄清一下嗎? – 2010-02-04 07:37:49

+0

主要問題已經足夠清楚了(我認爲提問者推動了他/她的英語指揮的限制),但是我想知道一些細節,比如(1)「Calle Mare deDéude」是來自數據庫或XML解析器,(2)提問者使用的API,以及(3)「將其轉換爲數組」的含義。 – 2010-02-04 11:54:22

回答

3

例外發生NSPlaceholderString initwithstring:雪leapord]無參數,在leapord異常發生,但警報不來的。

你會得到一個異常,告訴你你通過了nil參數,因爲你傳遞了一個nil參數。

您通過的字符串是nil。這與字符串的編碼無關,原因有兩個:

  1. 沒有字符串。 (如果你已經通過了一個字符串,你不會通過nil。)
  2. 字符串沒有編碼;他們只是字符串。編碼讓你從人類語言字符(字符串)到字節序列(數據)。

此外,如果你有一個字符串傳遞給initWithString:,你就不需要創建使用initWithString:一個字符串,因爲你已經擁有的字符串。如果你想複製它,你可以簡單地發送一個copy消息。

我們不知道你已經擁有了什麼,這是非常重要的。請編輯您的問題以包含從數據庫或XML解析器中獲取「字符串」的代碼,並將其傳遞到initWithString:

難道僅僅是因爲「E」,就是說我想知道的NSString不支持「E」或任何其它字符

的NSString支持所有以Unicode字符。實際上,這意味着所有這些。