PHPでodbc_connect()
を使用してOracleのODBCデータソースに接続しようとすると、UTF-8サポートに問題があります。PHPへのODBC接続、UTF-8なし
また、これはすべて32ビットで行われています。私はテストのためのoracle XE DBとinstaclient11_2 32bitドライバを使用しています、ODBCデータソース32it + WAMP32bitサーバに置かれています。
Althougt Oracle 12c DBおよびクライアントのHome 10g 32bitドライバでも同じ結果が得られます。
@TODAY 64ビットのinstanclientドライバでこれをすべてテストし、64ビットWAMPサーバーにODBC 64DataSourceを追加しました。私は見つけるカント
ĶAĶIS, čaļi
Guntārs Šalts, čaļi
:corretly文字を表示するにはまだ運ません...
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
$connect = odbc_connect("XEXDB", "username", "password");
$query = "SELECT col, 'čaļi' FROM TESST";
$result = odbc_exec($connect, $query);
while(odbc_fetch_row($result)){
$name = odbc_result($result, 1);
$surname = odbc_result($result, 2);
echo "$name, $surname <br/>";
}
odbc_close($connect);
?>
私はこのコードから取得する結果:
?A?IS, A?aA?i
Gunt?rs Salts, A?aA?i
しかし、あるべき書く方法odbc_connect()
の$dsn
を強制的にcharset=utf-8
、これまでに$ conn_stringをcharset=utf-8
で動作させることはできません。
また、utf8_encode()
とutf8_decode()
を使用しようとしました(これは私が必死でした)。
誰も似たような問題を抱えているのですか、あるいは誰かが私が試してみることのできる提案がありますか?
Oracleのようなロックは、適切なUTF-8を返します(1ではなく2文字を表示するため)。表示に関する問題に焦点を当てます。試してみてください 'echo"čaļi ";'おそらくどちらもうまくいかず、この場合問題はOracleに関係しません。 –
@WernfriedDomscheit私はすでにそれを試して、それは別の何か、私はオプションができないので、示唆することができますcorretlyを表示します。 Haventは私がテストしたすべてを言及しましたが、私はたくさんしました。 – arccuks