2011-03-23 78 views
0

我正在從iPhone發送文本到服務器進行處理。 文本包含一些西班牙字符。例如,A E I O U Uñ¿¡ºª西班牙字符編碼 - iphone

發送時,我與NSUTF8StringEncoding 服務器端也使用UTF8編碼進行解碼編碼它。

但在服務器端進行解碼,作爲???????

請讓我知道,如果一個人面對這個問題,這是怎麼解決的?

謝謝。

+0

您能否確認服務器接收的單個字節是相同的並且順序相同?他們的十六進制值是什麼? – 2011-03-23 10:48:14

+0

我會發布十六進制值。由於服務器端不是由我處理的,需要一些時間。 – D25 2011-03-24 06:11:31

回答

1

我找到了解決辦法。

由於這是一個post數據,我不得不逃跑的特殊字符。

stringByAddingPercentEscapesUsingEncoding:似乎並沒有逃避所有的特殊字符。我用「+」字符來面對這個問題,它被空白符替換。

我覺得同樣的事情發生了西班牙字符它不正確轉義,所以我手動更換它和它的工作。

以下是一個例子。我爲所有字符編寫了這個文件

escapedString = [escapedString stringByReplacingOccurrencesOfString:@"À" withString:@"%C0"];   
     escapedString = [escapedString stringByReplacingOccurrencesOfString:@"Á" withString:@"%C1"];   
     escapedString = [escapedString stringByReplacingOccurrencesOfString:@"Â" withString:@"%C2"];   
     escapedString = [escapedString stringByReplacingOccurrencesOfString:@"Ã" withString:@"%C3"];   
     escapedString = [escapedString stringByReplacingOccurrencesOfString:@"Ä" withString:@"%C4"]; 

謝謝xj1200和saadnib以查找此內容。我真的很感激。如果你們找到其他更好的解決方案,請發佈。

0

我認爲你可以使用谷歌工具箱的Mac ancoding這些字符。查看文件GTMNSString +

http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/?r=27#trunk%2FFoundation

+0

如果您投票未決,請張貼原因。 – saadnib 2011-03-23 12:28:14

+0

因爲NSUTF8StringEncoding對編碼字符來說是非常合適的。這個問題涉及接收使用這種格式編碼的字符。當Foundation框架已經具備所有必要功能時,不需要增加第三方API的複雜性。 – 2011-03-23 12:39:54

+0

基礎框架中的每件事都不意味着我們不應該添加第三方API來解決我們的問題。 NSUTF8StringEncoding不會以適當的格式轉換這些字符,這就是爲什麼他在服務器端面臨問題,並且此第三方API可以以適當的方式轉換它們,並且很容易在服務器端進行編碼。 – saadnib 2011-03-25 04:45:47