我在 MS Access 上有一个数据库,我通过调用 PDO 和 odbc 驱动程序将其与 PHP 一起使用。 我的数据库中有法语、丹麦语和波兰语单词。法语和丹麦语没问题,但波兰语字符没办法,我只得到“?”相反。
代码如下:
try{
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$dbName; Uid=Admin;Pwd=;");
}
catch(PDOException $e){
echo $e->getMessage();
}
$answer = $db -> query("SELECT * FROM dict_main WHERE ID < 20");
while($data = $answer-> fetch() ){
echo iconv("iso-8859-1","utf-8",htmlspecialchars($data['DK'])) . ' ';
echo iconv("iso-8859-2","utf-8",htmlspecialchars($data['PL'])) . ' ';
echo iconv("iso-8859-1","utf-8",htmlspecialchars($data['FR'])) . ' ';
}
如果有人有想法请告诉我,因为我的想法已经用完而且似乎没有任何效果,或者我是否应该提供有关我没有想到的问题的更多信息。
最佳答案
看起来像htmlspecialchars() does not support ISO-8859-2 .所以它可能会在到达 iconv() 之前破坏 $data['PL'] 的内容。
首先尝试将输入字符串转换为 UTF-8,然后将 htmlspecialchars() 应用于 UTF-8 字符串:
echo htmlspecialchars( iconv("iso-8859-2", "utf-8", $data['PL']) );
关于php - UTF-8 : successful conversion to iso-8859-1 but not to iso-8859-2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17494806/