从MySQL数据库检索的字符串中出现特殊字符和额外空格

时间:2013-08-24 03:38:54

标签: php mysql

我有一个Android应用,用户可以提问。此问题将发送到服务器,然后服务器将其发送到我的电子邮箱。我回答问题并将响应发送回服务器。响应存储在MySQL数据库中。用户将轮询服务器并在响应可用时将响应下拉到他们的手机上。当手机上显示响应时,格式化不正确。有特殊字符和额外的空白显示。

以下是将其发送到服务器并放入数据库时​​的响应示例:

  

我们生活在一个以利润为导向的社会中,整个人民的更大利益往往被抛到一边,有利于增加一个人的财富。当道德被抛在后面时,资本主义将不会按照预期的方式运作。

     

当政治家们走向板块时,他们往往不是为普通民众而战,而是出价最高的人。它是代表一家大公司或一些特殊利益集团的说客,他们将通过财政捐助说服政客,使他们的利益超越公众利益。这是最好的偏好和裙带资本主义。

     

我是否觉得这一天会到来,我们会超越这个?我很想相信,但有时候我们现在的生活方式会束缚我们。无论是恐惧还是普遍缺乏批判性思维,使人们无法追求我们应该拥有的世界/社会,必须改变一些事物。我们要么会达到一个突破点,要么我们的行动,否则这个系统将继续按照它的方式运作。我将给你留下埃德蒙·伯克的一句名言,“邪恶胜利唯一需要的是好人无所作为。”

以下是将它拉到手机上后的样子(我缩短了错误格式化的响应,但其余部分看起来就像这部分一样):

  

我们生活在以利润为导向的社会中   以及人民的更大利益   作为w =
  洞往往被扔到了   支持增加一个人的方式   财富。=
   资本主义不会起作用   道德的意图   留下b =
  ehind。

     

当政治家们走向板块时   他们经常不打击   COMM =
  关于人,但是出价最高的人。

我在响应进入数据库之前这样做:

  

$ message = $ dbhandler-> real_escape_string($ _ POST [“message”]);

当我使用保存响应的列创建表时,我将列分配给TEXT字段。

我不明白当它放入数据库或从中取出时,响应会发生什么。它有等号和额外的空格。有人可以对此有所了解并提供补救措施吗?

修改

我从数据库中检索响应,如下所示:

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

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

1 个答案:

答案 0 :(得分: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个字符,并使用“=”字符表示行继续。 (除其他外。)

您有多种选择:

  • 自行编码/解码引用可打印的正文。
  • 使用其他电子邮件编码而不是quoted-printable(base64效果很好)
  • 在超出76个字符行限制之前,手动拆分引用的可打印电子邮件正文的行。