PHP + PostgreSQL + ODBC - UTF8 - 变音符号问题
PHP + PostgreSQL + ODBC - UTF8 - diacritic problem
我使用官方的 pgsqlodbc,但我有变音符号问题
示例:"P�edplatn� za �ervenec 2019"
(黑色问号是错误的,正确的是"Předplatné za červenec 2019")
但是,数据库中的数据使用我的语言变音符号是正确的(我用 ODBC Devart 测试过,一切正常 - 但 Devart 不是免费的(我在试用中测试过)。
当我使用 Valentina Studio 检查数据库时,它告诉我:
Collation Settings: Encoding UTF8
数据库是远程的,在 Valentina Studio 和 PHP 的帮助下,我只能通过 VPN 访问。它是远程公司,我无法更改数据库中的任何内容。
现在我 运行 本地主机上的应用程序(Win10、Laragon、Wordpress、SAGE 模板)。我必须使用 ODBC,因为我必须通过 VPN 连接到远程数据库(我在 Putty 的帮助下使用 SSH 隧道)。但!我写了 aboce,用另一个 ODBC 驱动程序 (Devart) 一切正常。所以,我想要修复设置以连接来自 Postgre 的帮助免费官方 ODBC。
我的代码:
$dsn ="DRIVER=PostgreSQL Unicode(x64);Description=Free;Data Source=localhost;Port=5433;Database=$db_customer;User ID=$user;Schema=$schema;sslmode=require;";
我也测试了 DRIVER=PostgreSQL ANSI(x64) - 同样的错误
$conn=odbc_connect($dsn,$user,$password);
$sql="SELECT IH.publi.....
$rs=odbc_exec($conn,$sql);
...odbc_fetch_row($rs)... etc. classic
somobedy 可以帮我解决变音错误吗? How/where 可以设置UTF8编码吗?我花了几个小时来解决问题。
它在我的例子中不是逻辑(DB 不在 Win1250 中),而是它的功能。变音符号可以。
$invoice_item["nazev"] = iconv( "CP1250", "UTF-8//IGNORE//TRANSLIT", $invoice_item["nazev"]);
我使用官方的 pgsqlodbc,但我有变音符号问题
示例:"P�edplatn� za �ervenec 2019"
(黑色问号是错误的,正确的是"Předplatné za červenec 2019")
但是,数据库中的数据使用我的语言变音符号是正确的(我用 ODBC Devart 测试过,一切正常 - 但 Devart 不是免费的(我在试用中测试过)。
当我使用 Valentina Studio 检查数据库时,它告诉我:
Collation Settings: Encoding UTF8
数据库是远程的,在 Valentina Studio 和 PHP 的帮助下,我只能通过 VPN 访问。它是远程公司,我无法更改数据库中的任何内容。 现在我 运行 本地主机上的应用程序(Win10、Laragon、Wordpress、SAGE 模板)。我必须使用 ODBC,因为我必须通过 VPN 连接到远程数据库(我在 Putty 的帮助下使用 SSH 隧道)。但!我写了 aboce,用另一个 ODBC 驱动程序 (Devart) 一切正常。所以,我想要修复设置以连接来自 Postgre 的帮助免费官方 ODBC。
我的代码:
$dsn ="DRIVER=PostgreSQL Unicode(x64);Description=Free;Data Source=localhost;Port=5433;Database=$db_customer;User ID=$user;Schema=$schema;sslmode=require;";
我也测试了 DRIVER=PostgreSQL ANSI(x64) - 同样的错误
$conn=odbc_connect($dsn,$user,$password);
$sql="SELECT IH.publi.....
$rs=odbc_exec($conn,$sql);
...odbc_fetch_row($rs)... etc. classic
somobedy 可以帮我解决变音错误吗? How/where 可以设置UTF8编码吗?我花了几个小时来解决问题。
它在我的例子中不是逻辑(DB 不在 Win1250 中),而是它的功能。变音符号可以。
$invoice_item["nazev"] = iconv( "CP1250", "UTF-8//IGNORE//TRANSLIT", $invoice_item["nazev"]);