我在从Oracle数据库获取数据时遇到问题。如何获取 utf-8 格式的数据?浏览器显示带有回显的符号,但来自 Oracle 的数据有 ?标记而不是字母
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"></meta>
</head>
<?php
$tns2 = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521)) (CONNECT_DATA = (SID = sidname)))";
if ($conn = oci_connect("user","pass", $tns2))
{
echo "YAY!";
//oci_close($conn);
}
else
{
die("Nesiseka");
}
$stid = oci_parse($conn, 'SELECT * rowname where rownum<=10');
oci_execute($stid);
oci_close($conn);
echo "<table border='1'>'n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo "<tr>'n";
foreach ($row as $item) {
echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>'n";
}
echo "</tr>'n";
}
echo "</table>'n";
echo"įęėšųį";
?>
简单的解决方案。仅在行中添加"AL32UTF8"if ($conn = oci_connect(username,pass, $tns2 , 'AL32UTF8'))
现在一切正常。谢谢你的帮助
使用以下命令建立数据库连接:
$conn = oci_connect(username,pass, $tns2 , 'AL32UTF8')
将 PHP 编码设置为 UTF 8
mb_internal_encoding("UTF-8");
链接了解更多 http://php.net/manual/en/function.mb-internal-encoding.php