【问题标题】:Problems displaying paragraphs when retrieving text from a database从数据库中检索文本时显示段落的问题
【发布时间】:2011-08-19 15:34:40
【问题描述】:

我在显示数据库中带有段落的大量文本时遇到问题。

例如,如果我传入一个字符串,例如:

local lotsOfText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n\nNunc euismod justo sapien, at sollicitudin lacus. Quisque vestibulum commodo felis id posuere."

然后 \n\n 在文本中创建一个分节符,这是我所期望的。

但是,如果我从数据库中检索到与上面完全相同的字符串,例如:

local lotsOfText = row.Info

然后在屏幕上显示\n\n,而不是分节符。

任何帮助将不胜感激!


感谢大家的想法和建议。根据 BMitch 所说,我尝试了一种不同的方法,并认为这实际上是我的数据库的问题,而不是 Lua 或字符串本身的问题。

如果我在代码中创建一个数据库表并插入字符串,我可以正确地检索它。我认为这是由于我使用的数据类型,或者可能与我在 Lita 中编辑数据的方式有关。

【问题讨论】:

  • 欢迎来到 SO MattK。您应该显示您的代码,包括打印正常的字符串、将该字符串插入数据库的过程、检索字符串的过程以及错误打印字符串的过程。不要包含所有代码,只包含重现问题所需的代码。

标签: sqlite lua coronasdk


【解决方案1】:

当我用 Python 编写一个简短的构建脚本时,我遇到了几乎完全相同的问题。问题原来是 Python 将进程调用返回的字符串结果视为二进制。我想Lua也在做同样的事情。虽然我从未亲自遇到过这种情况,也无法通过 Google 找到直接的解决方案,但其他人在 this answer 中提到了用于打包和解包二进制数据的 lpack 库。此外,string.dump 和 loadstring 函数可能为您指明解决方案,以防 lpack 无法满足您的需求,但我认为关键是找出现有的方法(或自己编写)将“二进制”数据解释为字符。

【讨论】:

    【解决方案2】:

    只有在单引号或双引号字符串文字中才会处理转义。

    问题是您的数据库正在存储“\n”而不是实际存储分段符。

    如果你不能修复数据库,你可以在之后使用智能 gsub 处理它:

    mystring = string.gsub(mystring,[[\(%a)]],{n="\n",r="\r",t="\t"})
    

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 2013-03-23
      • 2014-01-10
      相关资源
      最近更新 更多