1
Hullo, 我會允許人們在我的應用程序中輸入非拉丁字符的文本,例如西里爾文和類。不過,無論我做什麼問號都會出現。 這是我對我的Objective-C程序代碼:將UTF-8文本傳遞給php腳本
NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/iPhone/php/insert.php?recipientEmail=%@&passwd=%@&email=%@&personalPasswd=%@&private=%d&latitude=%f&longitude=%f&altitude=%f&horizontal=%f&vertical=%f&disclosedEmail=%d", appDelegate.actualHttpHeader, myRecipient, myKey, email, passwd, myPrivate?1:0, myLatitude, myLongitude, myAltitude, myHeading, myTilting, mySigning?1:0]]
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
//NSLog(@"message is:%@",myMessage);
//myMessage = [myMessage stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"in graffitiSubm message=%@", myMessage);
[theRequest addValue:myMessage forHTTPHeaderField:@"message"];
[theRequest addValue:street forHTTPHeaderField:@"street"];
[theRequest addValue:city forHTTPHeaderField:@"city"];
[theRequest addValue:country forHTTPHeaderField:@"country"];
[theRequest setValue: @"text/xml;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
我嘗試使用UTF-8設置的URL請求兩者,因爲你可能會看到,和的NSLog下,現在評論作品。 NSLog報告我做了測試的正確的西里爾字符。
仍然當我在php腳本(insert.php)的開頭打印消息字符串的值時,它會有問號。 如果我在PHP中手動編寫西里爾文測試,它將被正確處理,甚至插入到數據庫中。
協議中應該如何更改以使UTF-8字符正確通過?
感謝,法布里奇奧
其實我意識到問題可能在任何地方。出於這個原因,我在NSLog傳遞給NSURLRequest之前打印了該值,並且在php腳本的開始處再次顯示了回顯方向。正如所說的第一次印刷給西里爾字符,而回聲問號。 – 2011-05-24 08:31:14
正如我所說,這可能只是由於*瀏覽器*(或其他任何你輸出它)只是顯示他們錯了。 * transport *中的編碼不太可能,但最終的錯誤總是實際的*輸出*。你排除了這種可能性嗎? – deceze 2011-05-24 08:44:19
是的,以防萬一我在回聲之前添加了標題方向,但是這是我在ReceivedData上得到的反饋:2011-05-24 10:49:46.561虛擬標記[10268:707]我開始解析:標題('Content-Type:text/html; charset = UTF-8')messaggio = ????зшззщ完成 :俄語文本被手動輸入到php腳本中,正如你所看到的,顯示正確:這是生成輸出的PHP片段:$ message = htmlentities($ _ SERVER ['HTTP_MESSAGE'],ENT_QUOTES,「UTF-8」); echo「header('Content-Type:text/html; charset = UTF-8')」; echo「messaggio =」。$ message; echo「зшззщ」; –
2011-05-24 08:52:07