2012-03-24 20 views
0

我們有一個實時Web服務iPhone應用程序,其中來自服務器的內容是從MySQL表中讀取的(類型:MyISAM;整理號碼:latin1_swedish_ci)&然後發送通過PHP通過XML。使用PHP的Web服務iPhone應用程序導致崩潰的某些字符MySQL和XML

一切都很好,直到昨天我們需要支持◉字符。

在我們的PHP的XML行,我們改變

$xml_output = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";

$xml_output = "<?xml version=\"1.0\"?>\n";

瞧,與角色一起,應用程序開始支持表情符號&國際語言!

但問題是..現在,當內容包含一些特定的字符,應用程序崩潰,我們無法檢測到這些字符。

舉一個例子:當MySQL字段中有這個'äðŸ'~ðŸ'UserFoo🌹â''字符串時,應用程序崩潰。 在這個例子中的怪異字符被認爲是一些表情符號字符。

我相信這是一些編碼相關的問題,但不知道如何設置它好嗎 - 從插入到表格使用PHP &然後通過XML獲取。

如何設置整個過程?另外,如果你能指出一些資源給初學者,用描述emoji支持來描述整個事物,那將是非常好的。

PS:我讀this question &後面的建議,但還不能修復。

+0

什麼*確切*崩潰?如果是應用程序,這可能與PHP完全無關。 – hakre 2012-03-24 14:13:31

+0

應用程序崩潰..但它與字符有關,就像我剛剛恢復上述在xml行中提到的變化,崩潰不會發生,但字符顯示奇怪。 – BufferStack 2012-03-24 14:53:19

+0

我會恢復編碼屬性,也許嘗試: $ xml_output =「<?xml version = \」1.0 \「encoding = \」utf-8 \「/> \ n」; – 2012-03-24 14:55:10

回答

0

我認爲你應該首先嚐試的是將你的數據庫和表編碼改爲「utf8_general_ci」。

然後,您應該在MySQL連接上運行SET NAMES 'utf8'。這很重要,以便所有客戶端通信都以unicode進行。

然後當你寫你的XML,設置<?xml version="1.0" encoding="UTF-8"?>

如果以上都沒有作品,我會建議你也檢查你的iPhone的代碼和CONFIGS確保特殊字符的支持。

希望它有幫助!

+0

此外,這個SO帖子可能有所幫助 - http://stackoverflow.com/questions/1705315/questions-about-iphone-emoji-and-web-pages – Abhay 2012-03-24 15:54:02

0

您還應該知道,大部分表情符號都使用4字節的UTF8代碼點進行編碼,除非您升級到版本5.5並將您的表格轉換爲utf8mb4字符集,否則這些代碼點不能存儲在MySQL中。

參考:How to insert utf-8 mb4 character(emoji in ios5) in mysql?

我猜測,你的應用程序崩潰,因爲XML解析器遇到無效字符。由於您正在進行編碼轉換,無效字符可能會出現。如果你將所有服務器端轉換爲UTF8,它可能會解決這個問題,但如果你接受用戶輸入,那麼你還需要清理輸入以確保它是有效的UTF8。

相關問題