Ingres:如何在PHP中以指定的编码读取数据库?

Ingres:如何在PHP中以指定的编码读取数据库?,php,cakephp,character-encoding,ingres,Php,Cakephp,Character Encoding,Ingres,我必须使用CakePhp和ingres 问题是我必须在网站中使用UTF-8,并且数据库是在ISO-8859-1中提供的 所以我的问题是,如何处理这个字符集问题 在MySql上,我知道我可以在数据库上运行“SET NAMES UTF-8”请求,但我找不到如何使用ingres来实现这一点 多谢各位 不幸的是,编码/字符集是在系统级别使用环境变量II_CHARSETxx定义的。查看ingprenv的输出以获取您的值。您可以更改它,但可能会导致数据损坏。使用UTF-8的最佳选择是使用N(VAR)CHAR

我必须使用CakePhp和ingres

问题是我必须在网站中使用UTF-8,并且数据库是在ISO-8859-1中提供的

所以我的问题是,如何处理这个字符集问题

在MySql上,我知道我可以在数据库上运行“SET NAMES UTF-8”请求,但我找不到如何使用ingres来实现这一点


多谢各位

不幸的是,编码/字符集是在系统级别使用环境变量
II_CHARSETxx
定义的。查看
ingprenv
的输出以获取您的值。您可以更改它,但可能会导致数据损坏。使用UTF-8的最佳选择是使用N(VAR)CHAR,而不是VARCHAR,PHP驱动程序将假定所有传入的数据都是UTF-8,并从UTF-16转换为。此转换由ini设置
ingres.utf8
(请参阅)

控制。不幸的是,编码/字符集是在系统级别使用环境变量
II_CHARSETxx
定义的。查看
ingprenv
的输出以获取您的值。您可以更改它,但可能会导致数据损坏。使用UTF-8的最佳选择是使用N(VAR)CHAR,而不是VARCHAR,PHP驱动程序将假定所有传入的数据都是UTF-8,并从UTF-16转换为。此转换由ini设置
ingres.utf8
(请参阅)

控制。问题是我无法更改ingres数据库中的任何内容,它来自ERP数据库,由另一家企业管理,我无权更改该数据库,这就是为什么我可以将客户端值设置为UTF8编码的原因。不幸的是,除非修改cakephp接口,将UTF-8数据强制为ISO-8859-1,然后再重新设置,否则您就不走运了。理论上,驱动程序可以做到这一点,但它会造成对外部库(如ICU或iconv)的依赖。我开始讨厌Ingres。。。如果一个数据库管理系统宣布它们与oracle处于同一级别,那么它们甚至比mysqlYou还要低,那么oracle也会有同样的问题。取决于实例的配置方式。。。我在这里并不是在提倡安格尔,而是憎恨安格尔,因为有人将其配置为不使用UTF-8有点苛刻。MariaDB/MySQL表还必须配置为“理解”UTF-8()。所以问题是严格的数据库管理,在这种情况下。问题是我不能更改ingres数据库的任何内容,它来自ERP数据库,是另一家企业管理它,我无权更改数据库,这就是为什么我可以将客户端值设置为UTF8编码的原因。不幸的是,除非修改cakephp接口,将UTF-8数据强制为ISO-8859-1,然后再重新设置,否则您就不走运了。理论上,驱动程序可以做到这一点,但它会造成对外部库(如ICU或iconv)的依赖。我开始讨厌Ingres。。。如果一个数据库管理系统宣布它们与oracle处于同一级别,那么它们甚至比mysqlYou还要低,那么oracle也会有同样的问题。取决于实例的配置方式。。。我在这里并不是在提倡安格尔,而是憎恨安格尔,因为有人将其配置为不使用UTF-8有点苛刻。MariaDB/MySQL表还必须配置为“理解”UTF-8()。因此,在这种情况下,问题完全在于数据库管理。