2013-08-24 24 views
1

我有一個Android應用程序,用戶可以在其中提出問題。這個問題發送到一個服務器,然後將它發送到我的電子郵件。我回答了問題,並將回覆發送回服務器。響應存儲在MySQL數據庫中。用戶將輪詢服務器,並在其可用時將響應拉到手機上。當手機上顯示響應時,格式不正確。有特殊字符和額外的空白顯示。特殊字符和額外的空格出現在從MySQL數據庫檢索到的字符串中

這裏是一個響應的例子,當它被髮送到服務器,並放置在數據庫:

我們生活在一個逐利的社會和人民的更大利益作爲一個整體趨於爲了增加財富而被拋到一邊。當道德被拋在後面時,資本主義不會按照它打算的方式運作。

當政治家們加強對板塊的關注時,他們通常不會爲普通百姓打球,而是出價最高的競拍者。這是代表一家大公司或一些特殊利益集團的遊說者,他們將通過財政捐助說服政治家將他們的利益放在公衆的利益之上。它最偏愛偏好和裙帶資本主義。

我覺得這一天會到來嗎?我很想相信,但有時候感覺我們目前的生活方式對我們有着束縛。無論是恐懼還是普遍缺乏讓人們追求我們應該擁有的世界/社會的批判性思維,都必須改變。我們要麼會達到一個突破點,而要讓我們的舉動或這個體系繼續按照它的方式運作。我會給你留下來自埃德蒙伯克的一句名言:「邪惡勝利唯一必需的事情就是好人無所作爲。」

這裏是什麼樣子後,它已被拉低到一個電話(我縮短了misformatted響應,但它的其餘部分看起來就像這部分內容):

我們生活在逐利的社會
和人民
爲AW =
孔更大的利益往往會拋出的
路邊有利於提高一個人的
財富。=
資本主義將不會運作其旨在當道德
保留b =
之後的方式

當政治家加緊板
他們往往不擊球的
COMM =
的人,但出價最高的人。

我這樣做的響應進入數據庫之前:

$消息= $ dbhandler-> real_escape_string($ _ POST [ 「消息」]);

當我用包含響應的列創建表時,我將該列指定爲TEXT字段。

我不明白響應發生了什麼,無論是放入數據庫還是從中取出。它有等號和額外的空格。有人可以澄清這一點,並提供補救措施?

編輯

我從數據庫中檢索這樣的迴應:

$response = $dbhandler->query("SELECT response FROM qar WHERE id='$rowId'"); 

$row = $response->fetch_row(); 
if($row[0] != NULL) { 
    echo($row[0]); 
} 
+0

因此,基本上有些東西是打破它,使它適合在屏幕上(如果你檢查它以相同長度結束的字符串)?你用來檢索數據的代碼是什麼? – Prix

回答

1

你要找的答案在你的問題本身:

這個問題發送到服務器,然後將它發送到我的電子郵件

註冊到你最喜愛的終端和用於的每個塊運行下面的命令並觀察輸出:

$ echo -en "We live in a profit-driven society and the greater good of the people as a w" | wc -c 
76 
$ echo -en "hole tends to get thrown to the wayside in favor of increasing one's wealth." | wc -c 
76 
$ echo -en "\nCapitalism will not function the way its intended to when morals are left b" | wc -c 
76 

見模式?

發生這種情況的原因是您的電子郵件使用引用打印的編碼,它將每行分割爲76個字符並使用'='字符表示續行。 (除其他事項外)

您有多個備選方案:

  • 編碼/解碼自己的引用可打印體。
  • 使用替代電子郵件編碼而不是引用打印(base64效果很好)
  • 在超出76個字符行限制之前,手動拆分引用可打印電子郵件正文的行。
相關問題