2012-09-28 116 views
0

在我的應用程序中,我使用ASCII字符串編碼將NSString轉換爲NSData。對於下面的情況,我無法將字符串轉換爲數據,因爲它包含一些特殊字符。我能夠使用UTF 8正確編碼,但我需要使用ascii,因爲服務器也配置爲使用ASCII。特殊字符的ASCII字符串編碼問題

NSData * ldata = [@「CASTAÑO」dataUsingEncoding:NSASCIIStringEncoding];

請幫我解決這個問題。

在此先感謝

回答

0

我能夠編碼和解碼使用NSISOLatin1StringEncoding即使服務器被配置爲使用ASCII數據。

NSData * ldata = [@「CASTAÑO」dataUsingEncoding:NSISOLatin1StringEncoding];

特殊字符'Ñ'是一個擴展ascii字符,不會被ASCII編碼。

1

你的意思是你想「CASTAÑO」在你的NSData被轉換爲「卡斯塔諾」?

使用dataUsingEncoding:allowLossyConversion:

如:

NSData *ldata=[@"CASTAÑO" dataUsingEncoding:NSASCIIStringEncoding 
         allowLossyConversion:YES]; 
+0

是否有任何方式發送CASTAÑO本身,而不是CASTANO在服務器端,他們正在尋找CASTAÑO本身在數據庫中進行甄別 –

+1

不是ASCII,不是(Ñ不是ASCII字符)。 – admsyn

+1

請注意,Ñ是擴展ASCII(165),因此引發了服務器真正需要的問題。如果它需要7位ASCII碼,則無法發送一個Ñ。如果它需要8位擴展ASCII,那麼UTF-8將匹配合法擴展ASCII字符。唯一一個你應該遇到問題的地方是當字符超出了擴展的ASCII字符集(這對你來說不起作用)。 –

0

如何使用MIME傳輸數據? MIME是使用ASCII字符編碼各種文件類型的標準方式。 它通常用於使用不支持任何非ASCII數據的SMTP協議發送非ASCII電子郵件。

有些類擴展NSData/NSString來使用MIME編碼數據(這將導致ASCII字符。)我不認爲這是一個即時的解決方案,但根據您的約束(僅ASCII服務器), MIME應該是最好的解決方案。

參見: http://www.mulle-kybernetik.com/software/EDFrameworks/download.html#EDMessagehttp://bitbucket.org/portablek/mimekit/overview