PHP亂碼的問題【註:不是串連資料庫亂碼】
環境:XP系統, PHP 5.3.4, Apache web server 2.2, mysql 5.5
PHP code
try{ $mysqli = new mysqli("localhost","username","password","db1",3306); //當mysql服務沒開啟時... if($mysqli->connect_errno){ //註:SqlException是直接繼承Exception的自訂類。 // echo $mysqli->connect_error; //亂碼的來源... throw new SqlException($mysqli->connect_error,$mysqli->connect_errno); }}catch(SqlException $e){ echo $e->getMessage(); //亂碼}
當mysql資料庫服務沒啟動的時候,上面的php語句輸出一堆亂碼(錯誤號碼:2002)……
網上有調用$mysqli->query("set names gbk")等的需要使用$mysqli對象的都不行,因為$mysqli都還沒串連,調用其它函數會報錯……
(mysql資料庫正常啟動後,其它資料庫連接錯誤顯示的卻是英文,不再出現亂碼了……)
懷疑是XP系統下語系設定的問題,導致$mysqli->connect_error返回中文,結果變亂碼了……但其它類型的資料庫錯誤($mysqli->error)返回的卻是英文……
請問下這種情況怎麼處理啊?
先謝謝了~
------解決方案--------------------
在網頁上嗎? 先改變一下頁面編碼(瀏覽器菜單上)看看到底是什麼編碼及內容, utf8或gbk,
然後如果connect_errno=2002就自己轉一下編碼...
也可以用自己的message代替該資訊....
------解決方案--------------------
探討
SqlException是直接繼承Exception的自訂類。
------解決方案--------------------
是的 確實 這樣
------解決方案--------------------
首先是你PHP的網頁頭文的顯示的編碼
然後記得set name UTF-8 或者GBK 或者GB2312 但是要和網頁頭裡的一樣
------解決方案--------------------
2002 就是 Can't connect to local MySQL server through socket '/tmp/mysql.sock'
所以你完全可以不細究.
應該和你的mysql client api的版本及設定有關
實在想知道可以照樓上嘮叨說的把資訊貼上來
探討
引用:
在網頁上嗎? 先改變一下頁面編碼(瀏覽器菜單上)看看到底是什麼編碼及內容, utf8或gbk,
然後如果connect_errno=2002就自己轉一下編碼...
也可以用自己的message代替該資訊....
1.瀏覽器裡改變成其它常用編碼完全沒變化……
2.可以那樣判斷,但是想搞清楚哪裡出問題了...
------解決方案--------------------
今天學了,,想應該是你下載的資料庫,不對漢文書處理 啊,,記得是,一個是 V6 版本,還有一個是v9
------解決方案--------------------
用記事本開啟檔案 然後點:檔案-另存新檔-編碼選擇UTF-8 最後就OK啦
------解決方案--------------------
又見亂碼問題……你確認所有的檔案格式都是UTF-8,頁面字元集也是UTF-8嗎?
------解決方案--------------------
gbk 編碼的:由於目標機器積極拒絕,無法串連。
mysql 用戶端會根據你所使用的作業系統的預設語言產生本地化的錯誤資訊