首頁 > 網際網路

php查詢access資料庫部分中文亂碼的解決方法

2019-12-14 01:17:20

這幾天在弄一個微信公眾號的微網站,因為是二次開發,用到的是之前的access資料庫來查詢資訊,但是查詢結果在顯示的時候,有部分中文是亂碼的,而且很異常,有的亂碼在重新整理之後會變正常,但是總不能指望客戶點開頁面重新整理了再看是吧。我起初也很納悶怎麼出怎麼個問題,於是我在網上查了很多資料,但是沒有具體的解決方法。最後,在瞎測試的時候,居然撞對了,下面我總結一下方法,以後遇到類似問題的同學可以做一下參考。

1

首先大家看一下出問題時候的介面,中文的排版這些是沒有問題的,但是總有那麼些中文是亂碼的。


2

之前開發的時候,為了避免不必要的麻煩,我統一使用的是UTF8編碼,但是執行的結果就是如上圖。

3

我用mb_detect_encoding()來檢測這段新聞的主體看到底是什麼編碼的字串,然後用iconv函數來做一個轉換,但是發現按照mb_detect_encoding列印出來的結果來進行轉換之後,結果顯示得更糟糕,後來發現這個函數本身就存在一些問題,而且要解決還必須動伺服器的環境,我這還弄不了,只好作罷。



4

我想把編輯過的這段資訊輸出為html實體看一下,是不是字串本身有問題,居然發現htmlspecialchars函數輸出是空白!又再次查詢了這個函數的具體用法,終於輸出了:




5

我直接從資料庫中把這段資訊復製了出來,貼在了php檔案中執行,居然兩個都是正常的,並沒有錯誤。以此確定問題肯定還是出在編碼上。



6

最終問題還是回到了iconv函數和檔案編碼上,我把想到的編碼都做了一個轉換,但是結果還是有誤。突然我腦袋一熱:看看把這段資訊的編碼從GB2312轉到GB2312試試是什麼結果呢?


7

結果雖然並不完美,但是還是解決了大部分的問題,至少如果實在解決不到完美,起碼問題的嚴重性減少了很多。



IT145.com E-mail:sddin#qq.com