[英]How do I to export utf8mb4 mysql data using php to a csv file
我正在尋求有關 csv 文件導出的幫助。
我有一個編碼為 utf8mb4 (unicode_ci) 的 mysql 數據庫,其中一個表使用排序規則 utf8mb4_unicode_ci 作為我的字段。 數據包含特殊字符,如版權符號、“é”等外來字符。我正在嘗試將數據導出到 csv 文件,但包含特殊字符的字符串值未正確轉換。 例如,版權符號在我生成的 csv 文件中顯示為“¬Æ”。
我的環境是 Ubunutu 18.0.4 上的 Laravel 7、PHP 7 和 MySQL 5.7。 我的數據庫連接已經在我的 Laravel 數據庫配置文件中設置為 charset = "utf8mb4" 和 collation = "utf8mb4_unicode_ci"。 我的頁面標題中的元標記已設置為使用 charset=utf-8 並且用於生成 csv 文件的標題設置為:
header('Content-Type: text/csv; charset=utf-8');
我試過使用:
iconv("utf-8", "ascii//TRANSLIT//IGNORE", $mystring);
但這只會用 ascii 表示而不是正確的符號替換一些值。 我也嘗試過使用類似的東西
htmlspecialchars($mystring, ENT_QUOTES, "UTF-8");
但這仍然為 csv 文件中的版權符號和其他奇怪的字符序列返回“¬Æ”。 當我在 php 中回顯這些值時,它們會正確顯示在我的頁面上。 當我將行附加到我的 csv 文件時,我是否認為我需要以某種方式將 utf8mb4 字符串轉換為常規 utf-8? 我一直無法找到解決方案,正在尋求幫助。
誰能告訴我我需要做什么才能在我的 csv 文件中獲得預期的符號?
您沒有顯示用於實際編寫文件的代碼。 此外,您沒有說明您是如何檢查結果的(如果您使用的是 Excel,這可能是問題所在)。
並不是數據沒有正確導出,而是正在讀取或顯示它的程序沒有使用正確的字符集。 您可以嘗試將 UTF8 BOM
\xEF\xBB\xBF
添加到文件的開頭,程序可能會將其用作應用正確字符集的信號。 如果做不到這一點,請查看如何在該程序中正確打開 UTF8 CSV。 如果您無法將數據轉換為程序正確處理的字符集。
很有幫助。 我正在使用 Excel 預覽文件。 當我在代碼編輯器中查看原始 csv 數據時,預期的字符就在那里,因此它與 Excel 處理文件的方式有關。 由於我在 Mac 上工作,並且使用 [Option] + [G] 輸入 © 符號,é 是 [Option] + [E] 等等。這可能是 Excel 的翻譯問題讀取文件。 將\xEF\xBB\xBF
添加到文件的開頭似乎已經成功了!
SELECT(hex)
和SHOW CREATE TABLE
驗證表中的數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.