我正在從iPhone發送文本到服務器進行處理。 文本包含一些西班牙字符。例如,A E I O U Uñ¿¡ºª西班牙字符編碼 - iphone
發送時,我與NSUTF8StringEncoding 服務器端也使用UTF8編碼進行解碼編碼它。
但在服務器端進行解碼,作爲???????
請讓我知道,如果一個人面對這個問題,這是怎麼解決的?
謝謝。
我正在從iPhone發送文本到服務器進行處理。 文本包含一些西班牙字符。例如,A E I O U Uñ¿¡ºª西班牙字符編碼 - iphone
發送時,我與NSUTF8StringEncoding 服務器端也使用UTF8編碼進行解碼編碼它。
但在服務器端進行解碼,作爲???????
請讓我知道,如果一個人面對這個問題,這是怎麼解決的?
謝謝。
我找到了解決辦法。
由於這是一個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以查找此內容。我真的很感激。如果你們找到其他更好的解決方案,請發佈。
我認爲你可以使用谷歌工具箱的Mac ancoding這些字符。查看文件GTMNSString +
http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/?r=27#trunk%2FFoundation
如果您投票未決,請張貼原因。 – saadnib 2011-03-23 12:28:14
因爲NSUTF8StringEncoding對編碼字符來說是非常合適的。這個問題涉及接收使用這種格式編碼的字符。當Foundation框架已經具備所有必要功能時,不需要增加第三方API的複雜性。 – 2011-03-23 12:39:54
基礎框架中的每件事都不意味着我們不應該添加第三方API來解決我們的問題。 NSUTF8StringEncoding不會以適當的格式轉換這些字符,這就是爲什麼他在服務器端面臨問題,並且此第三方API可以以適當的方式轉換它們,並且很容易在服務器端進行編碼。 – saadnib 2011-03-25 04:45:47
您能否確認服務器接收的單個字節是相同的並且順序相同?他們的十六進制值是什麼? – 2011-03-23 10:48:14
我會發布十六進制值。由於服務器端不是由我處理的,需要一些時間。 – D25 2011-03-24 06:11:31