【问题标题】:Ñ characters not saving/showing in columns in PHP 7/PROPEL2.0/Oracle 11gÑ 在 PHP 7/PROPEL2.0/Oracle 11g 的列中没有保存/显示的字符
【发布时间】:2022-01-10 06:38:40
【问题描述】:

我是使用 Propel ORM 和特别是 Oracle 的新手,因为我在 MYSQL 中使用过

当我在 PROPEL ORM 2.0 中保存或查询时,数据库 (Oracle11g) 中的 Ñ 未显示

Oracle中的列类型是NVARCHAR2

Here is the data in oracle

Here is the result

请帮忙。我很沮丧:(。 一个月来,我一直在寻找解决这个问题的方法。 非常感谢

【问题讨论】:

  • 我不是数据库专家,其他人可以插话 Oracle 细节。看看这个,字符串编码存在问题。该列是 ASCII 并且您正在尝试添加 Unicode 字符,或者您正在将 ascii 添加到 unicode 列?无论哪种方式,您都可以通过查看代码流中的哪个位置对字符串进行正确编码来找到答案。
  • 我认为 PROPEL ORM 是造成这种情况的原因。我希望这里有 PROPEL ORM 专家可以帮助我。 Propel 的社区并没有那么大
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: php oracle pdo propel


【解决方案1】:

PHP Oracle 驱动程序对 NVARCHAR 或 NCLOB 类型没有很好的支持(请参阅Inserting into NVARCHAR column type using PHP Oracle 之类的问题)。

解决方案是停止使用 NVARCHAR2 列。使用基本字符集为 AL32UTF8 的数据库,并将数据放在 VARCHAR2 列中。您可以通过运行SELECT value AS db_charset FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';来检查数据库的基本字符集

还要确保使用正确的“客户端”字符集初始化 PHP,例如喜欢$dbh = new PDO('oci:dbname=localhost/orclpdb;charset=AL32UTF8', ... );

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
相关资源
最近更新 更多