从数据库检索文本时无法显示段落。

我无法从数据库中显示具有段落文本的块的内容。

例如,如果我传入以下字符串:

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或字符串本身的问题。

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

原文链接 https://stackoverflow.com/questions/7123981

点赞
stackoverflow用户263356
stackoverflow用户263356

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

2011-08-20 06:22:05
stackoverflow用户282536
stackoverflow用户282536

翻译如下:

当处于单引号或双引号字符串文字之内时,转义字符才会被处理。

问题是您的数据库存储了“\n”,而不是实际存储段落换行符。

如果您无法修复数据库,可以使用智能的gsub后处理:

mystring = string.gsub(mystring,[[\(%a)]],{n="\n",r="\r",t="\t"})
2011-08-21 05:00:14