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

我使用官方的pgsqlodbc而且我有变音问题</ p>

例如:“P �edplatn�za^ ervenec 2019“</ p>

(黑色问号是错误的,正确的是”Předplatnézačervenec2019“)</ p>

但是,数据在 数据库与我的语言变音符号是正确的(我使用ODBC Devart进行测试,一切正常 - 但Devart不是免费的(我在试用时测试过)。</ p>

当我使用Valentina Studio检查数据库时 告诉我:</ p>


整理设置:编码UTF8 </ p>
</ blockquote>

数据库是远程的,我只能访问 通过VPN帮助Valentina Studio和PHP。它的远程公司,我无法改变DB中的任何内容。
现在我在localhost上运行应用程序(Win10,Laragon,Wordpress,SAGE模板)。我必须使用ODBC,因为我必须连接到 远程数据库通过VPN(我使用SSH隧道帮助Putty)。但是!我写了aboce,另一个ODBC驱动程序(Devart)就是一切正常。所以,我想修复设置连接帮助免费关闭 来自Postgre的icial ODBC。</ p>

我的代码:</ p>

  $ dsn =“DRIVER = PostgreSQL Unicode(x64); Description = Free; Data  Source = localhost; Port = 5433; Database = $ db_customer; User ID = $ user; Schema = $ schema; sslmode = require;“; 
</ code> </ pre>

我也测试了 DRIVER = PostgreSQL ANSI(x64) - 相同的错误</ p>

  $ conn = odbc_connect($ dsn,$ user,$ password); 

$ sql =“SELECT IH。 publi .....

$ rs = odbc_exec($ conn,$ sql);

... odbc_fetch_row($ rs)... etc. classic
</ code> </ pre>

somobedy可以帮助我治疗错误的尿酸炎吗? 如何/在哪里可以设置UTF8编码? 我花了好几个小时才解决,没有。</ p>
</ div>

展开原文

原文

I use official pgsqlodbc and I have diacritic problem

example: "P�edplatn� za �ervenec 2019"

(black question mark is error, correct is "Předplatné za červenec 2019")

But, data in DB is correct with my language diacritics mark (I tested with ODBC Devart and everything is ok - but Devart is not free (i tested on trial).

When I check DB using Valentina Studio it tells me:

Collation Settings: Encoding UTF8

The DB is remote, I have access only via VPN with help Valentina Studio and PHP. Its remote company, i can not change anything in DB. Now I run the aplication on localhost (Win10, Laragon, Wordpress, SAGE template). I must use ODBC, because I must connect to remote DB via VPN (I use SSH tunnel with help Putty). But! I wrote aboce, with another ODBC driver (Devart) is everything OK. So, I want repair setting for connect with help free official ODBC from Postgre.

My Code:

$dsn ="DRIVER=PostgreSQL Unicode(x64);Description=Free;Data Source=localhost;Port=5433;Database=$db_customer;User ID=$user;Schema=$schema;sslmode=require;";

I tested also DRIVER=PostgreSQL ANSI(x64) - same error

$conn=odbc_connect($dsn,$user,$password);

$sql="SELECT IH.publi.....

$rs=odbc_exec($conn,$sql);

...odbc_fetch_row($rs)... etc. classic

Can somobedy help me with wrong diacritis? How/where can I set encoding UTF8? I spent hours for solving and nothing.

douwu8251
douwu8251 劳伦兹,谢谢你的帮助。但是,它是否相关,如果另一个ODBC驱动程序(Devart)一切正常?但是...现在我在localhost(Win10,Laragon,Wordpress,SAGE模板)上运行应用程序。我必须使用ODBC,因为我必须通过VPN连接到远程数据库(我使用SSH隧道和帮助Putty)。没有ODBC我无法通过VPN连接到远程Postgre。但!我上面写的,用另一个ODBC驱动程序(Devart)就可以了。所以,我想修复设置连接来自Postgre的免费官方ODBC。
大约一年之前 回复
dongyan6503
dongyan6503 你为什么在PHP中使用ODBC?您使用什么操作系统?
大约一年之前 回复

1个回答



在我的情况下它不是逻辑(DB不在Win1250中),而是它的功能。 变音即可。</ p>

  $ invoice_item [“nazev”] = iconv(“CP1250”,“UTF-8 // IGNORE // TRANSLIT”,$ invoice_item [“nazev”  ]);

</ code> </ pre>
</ div>

展开原文

原文

Its not logic in my case(DB is not in Win1250), but its function. Diacritic is OK.

$invoice_item["nazev"] = iconv( "CP1250", "UTF-8//IGNORE//TRANSLIT", $invoice_item["nazev"]);    

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐