我存儲在服務器上的數據庫是在UTF8,utf8mb4,在PDO utf8_general_ci麻煩檢索數據
utf8_general_ci編碼
我所有的網頁都被迫在
utf8
我與db的連接是像這樣:
return new PDO('mysql:host=localhost;dbname=XXXX',
'XXXX', 'XXXX', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4",
PDO::MYSQL_ATTR_LOCAL_INFILE => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
但我甚至嘗試作爲選項 「集名UTF8」
當我試圖分析我的結果集,我總是有一些文字領域的問題,如果我嘗試的命令喜歡:
$originalEncoding = mb_detect_encoding($fieldWithProbs);
返回到我
ASCII
,然後,如果我試圖把它與像命令轉換:
它似乎並不工作,如果我再次問編碼類型仍然是ASCII。 奇怪的是,它在本地工作,但不是在db集上使用相同類型的編碼的遠程服務器上。 我該如何解決這個問題?
好吧,我的小知識似乎讓我走錯了路。但我的probs是,如果我嘗試'$ var = $ fieldWithProb'它給了我一個NULL – JahStation
兩件事情:mb_convert_encoding()需要三個參數,這可能是罪魁禍首。另外,如果($ var = $ field)產生null,那麼其中一個爲空。你必須var_dump來縮小問題的範圍。 –
第三個參數是可選的'字符串mb_convert_encoding(字符串$ str,字符串$ to_encoding [,混合$ from_encoding = mb_internal_encoding()])'我做了幾個var_dump之前問:(我不能發現爲什麼一個問題當分配給var的數組轉換爲空值時,該數組的字段正確 – JahStation