簡體   English   中英

UTF-8:成功轉換為ISO-8859-1,但未成功轉換為ISO-8859-2

[英]Utf-8: successful conversion to iso-8859-1 but not to 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'])) . ' ';
        }

請讓我知道是否有人有想法,因為我已經快要精疲力盡了,似乎什么也沒有用,或者我是否應該提供有關我未曾想到的問題的更多信息。

看來htmlspecialchars()不支持ISO-8859-2 因此,在到達iconv()之前,它可能會破壞$data['PL']的內容。

嘗試首先將輸入字符串轉換為UTF-8,然后將htmlspecialchars()應用於UTF-8字符串:

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

您正在使用PHP 5.3.13。 然后,我希望new POD的字符集可以完成其工作。 (在5.3.6之前。您必須使用$db->exec("set names utf8"); )。 因此添加charset=utf8; 連接到您的連接線。 我也希望您的Access數據庫為UTF-8。

您也可以嘗試charset=ucs2; 有和沒有htmlspecialchars( iconv("iso-8859-2", "utf-8", $data['PL']) );

$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$dbName; Uid=Admin;Pwd=;charset=utf8;");

要么

$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$dbName; Uid=Admin;Pwd=;charset=ucs2;");

順便說一句 :不要忘了在文檔頂部將輸出設置為UTF-8。

<?php header('Content-Type:text/html; charset=UTF-8'); ?>

和/或

<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>

如果那仍然不起作用,我懷疑您的Access數據庫中的編碼混亂了。


編輯:

在這一點上,我唯一能想到的就是直接使用odbc_connect並繞過PDO,但我認為問題出在ODBC(Access-> ODBC)中。 如果是這種情況,這將無濟於事:

$conn=odbc_connect("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$dbName; Uid=Admin;Pwd=;charset=utf8", "", "");
$rs=odbc_exec($conn, "SELECT * FROM dict_main WHERE ID < 20");
odbc_result_all($rs,"border=1");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM