如何在PHP中更改PDO/SQLite连接的字符编码?

如何在PHP中更改PDO/SQLite连接的字符编码?,php,sqlite,pdo,Php,Sqlite,Pdo,我发现一个php gtk应用程序一直运行在非utf8字符串中有一个小问题,我发现问题出在数据库连接中,即使数据库应该是UTF-8 我尝试过使用“SET CHARACTER SET utf8”(MySQL方式)和“SET NAMES utf8”,但什么都没有发生(在“”页面中也没有关于这些命令的任何信息,所以我对此并不感到惊讶) PD:可能连接已经在UTF-8中,而数据没有,但是如果有办法更改连接编码,这个问题仍然很有用。据我所知,这是在每个数据库级别上。无法更改连接上的编码 C API具有打开连

我发现一个php gtk应用程序一直运行在非utf8字符串中有一个小问题,我发现问题出在数据库连接中,即使数据库应该是UTF-8

我尝试过使用“SET CHARACTER SET utf8”(MySQL方式)和“SET NAMES utf8”,但什么都没有发生(在“”页面中也没有关于这些命令的任何信息,所以我对此并不感到惊讶)

PD:可能连接已经在UTF-8中,而数据没有,但是如果有办法更改连接编码,这个问题仍然很有用。

据我所知,这是在每个数据库级别上。无法更改连接上的编码

C API具有打开连接的功能,可以是UTF-8或UTF-16。我希望PHP的SQLite模块(以及PDO)只使用UTF-8版本。如果这是正确的,我希望SQLite连接总是UTF-8。这意味着您应该使用/手动编码/解码字符串


另请参见:

我发现“SQLite对它接收的文本并不挑剔,并且非常乐意处理未规范化甚至格式不正确的UTF-8文本字符串。希望存储IS08859数据的程序员可以……”因此,该文本最初是在ISO85(某种东西)中出现的我听从了你的建议,添加了几个utf8_编码(感谢你为OOP编程),所以从一开始一切都是utf8。我的主数据库是用UTF8重新创建的,我刚刚添加了这些行,以便将我的系统与一些插件数据库连接起来。在这种情况下,在检索回数据时必须使用UTF8_decode。只有在内部使用PHP的默认字符集(ISO-8859-1)时,才需要这些。考虑使用UTF-8通过你的系统,在这种情况下,你不必编码任何东西(是的,这是令人困惑的)。