猿问

PHP + PostgreSQL + ODBC - UTF8 - 变音符号问题

我使用官方 pgsqlodbc 并且我有变音符号问题


示例:“P edplatn za ervenec 2019"


(黑色问号是错误,正确的是“Předplatné za červenec 2019”)


但是,DB 中的数据与我的语言变音符号标记是正确的(我使用 ODBC Devart 进行了测试,一切正常 - 但 Devart 不是免费的(我进行了试用)。


当我使用 Valentina Studio 检查数据库时,它告诉我:


排序规则设置:编码 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 可以帮助我解决错误的 diacriitis 吗?如何/在哪里可以设置编码 UTF8?我花了几个小时来解决,但一无所获。


牛魔王的故事
浏览 207回答 1
1回答

米琪卡哇伊

就我而言,它不是逻辑(DB 不在 Win1250 中),而是它的功能。变音符号是可以的。$invoice_item["nazev"] = iconv( "CP1250", "UTF-8//IGNORE//TRANSLIT", $invoice_item["nazev"]);
随时随地看视频慕课网APP
我要回答