SQLite为同一查询提供不同的结果

SQLite为同一查询提供不同的结果,sqlite,perl,Sqlite,Perl,我有一个本地(macos)基于web的SQLite数据库,在一列中包含一些UTF8字符。当在终端中执行查询时,CLI“sqlite3”会正确地呈现它们。但是,当同一个查询通过浏览器通过本地web服务器(运行Perl)执行时,我在一个查询中得到了正确的渲染,但在另一个查询中得到了损坏的渲染。我能找到的唯一区别是ORDERBY子句。但我不清楚为什么会有不同。当然,我想解决这个问题,得到正确的UTF8渲染。据我所知,数据库中的数据是UTF-8。有什么建议吗?我不确定,但您可能忘记了在perl端进行编码

我有一个本地(macos)基于web的SQLite数据库,在一列中包含一些UTF8字符。当在终端中执行查询时,CLI“sqlite3”会正确地呈现它们。但是,当同一个查询通过浏览器通过本地web服务器(运行Perl)执行时,我在一个查询中得到了正确的渲染,但在另一个查询中得到了损坏的渲染。我能找到的唯一区别是ORDERBY子句。但我不清楚为什么会有不同。当然,我想解决这个问题,得到正确的UTF8渲染。据我所知,数据库中的数据是UTF-8。有什么建议吗?

我不确定,但您可能忘记了在perl端进行编码/解码。要让DBD为您解决这个问题,您应该在连接选项中传递
sqlite\u unicode=>1

您是否在任何地方对数据进行编码/解码?我们能看一看MWE吗?特别是,在连接到数据库时是否设置了sqlite_unicode?否,无编码。我从零开始,看看需要什么,但这是一个难题。数据是通过DB浏览器输入的,有时是通过Perl脚本输入的,我运行该脚本来添加新记录。请原谅,什么是MWE?MWE=最小工作示例,另请参见。我认为问题在于一个查询返回的是非ASCII字符,而您遇到了问题,因为网页的默认编码是拉丁-1或类似的奇怪代码。在HTML中添加
可以解决这个问题吗?我在所有脚本的连接字符串中添加了'sqlite\u unicode=>1',这似乎就是解决方案。非常感谢您的时间和专业知识。我把我的评论变成了答案。虽然在将来你真的应该包括可运行的代码,所以我们不必猜测这个问题。