Utf-8:成功转换为iso-8859-1但不转换为iso-8859-2

Geo*_*rge 5 php sql ms-access iso-8859-1 iso-8859-2

我有一个关于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'])) . ' ';
        }
Run Code Online (Sandbox Code Playgroud)

如果有人有想法,请告诉我,因为我用完了,似乎什么都没有用,或者我是否应该提供更多关于我没有想到的问题的信息.

Ran*_*eed 3

看起来htmlspecialchars()不支持 ISO-8859-2$data['PL']所以它可能会破坏之前的内容iconv()

首先尝试将输入字符串转换为 UTF-8,然后应用于htmlspecialchars()UTF-8 字符串:

echo htmlspecialchars( iconv("iso-8859-2", "utf-8", $data['PL']) );
Run Code Online (Sandbox Code Playgroud)