XAMPP上的MariaDB存在問題(無論您是在Windows還是Linux上運行)。 我在Windows 10中使用XAMPP和PHP 7(最初我在Xubuntu上使用XAMPP 5.6並且發生同樣的問題)作爲我的站點開發服務器。我將它設置:XAMPP上的UTF-8 X MariaDB
- 的元標記在所有HTML檔案UTF-8,
- 的PHP頭函數發送UTF-8的數據,
的PHP指令,當我連接到數據庫(我用庫MySQLi)
-
mysqli_set_charset($conexao, "utf-8"); setlocale(LC_ALL, 'pt_BR.utf8');
的default_codin在php.ini文件g的設置好的用於UTF_8,
- 和所有的數據庫中utf8_general_ci排序規則設置。
我用phpMyAdmin的嵌入XAMPP進入測試數據,在第一次測試是創造在phpMyAdmin自身領域,在第二次測試從一個CSV文件中使用的功能,導出數據(文件已被設置爲UTF -8編碼)。
當我試圖對數據庫進行查詢然後嘗試顯示從該查詢獲得的數據時,會發生什麼情況,重音字符都帶有問號,強制使用函數處理從數據庫中獲取的信息函數utf8_encode。
當時我不打擾它,但是當把我的網站傳輸到生產服務器(而不是XAMPP)時,來自數據庫和使用utf8_encode函數處理的數據顯示(在所有瀏覽器中)以代替那些重音字符只有問號(?)和感嘆號(!)。我不得不接聽電話utf8_encode並解決了問題。
在兩臺服務器提交相同的SQL文件並最終發生這種差異的操作。唯一的區別是生產服務器phpMyAdmin的不接受我的SQL文件的以下標題:
/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */
這裏是服務器設置: XAMPP部署服務器:
- PHP 7.0.4
- MariaDB的10.1.10
- phpMyAdmin的4.5.1
生產服務器:
- PHP 7.0.4
- phpMyAdmin的3.5.2.2
- MariaDB的10.0.24
請幫幫我!
此致
路易斯
不要使用'utf8_encode',只有化合物的問題。 'SHOW CREATE TABLE'確保_columns_不會說'latin1'。 –
親愛的@RickJames,我在所有表中使用了'SHOW CREATE TABLE',並且所有varchar列都表示:'namecolumn varchar(255)COLLATE utf8_unicode_ci'。沒有列說'latin1'。 –