簡體   English   中英

如何使用 php 將 utf8mb4 mysql 數據導出到 csv 文件

[英]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" 和 collat​​ion = "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,這可能是問題所在)。

Sammitch評論

並不是數據沒有正確導出,而是正在讀取或顯示它的程序沒有使用正確的字符集。 您可以嘗試將 UTF8 BOM \xEF\xBB\xBF添加到文件的開頭,程序可能會將其用作應用正確字符集的信號。 如果做不到這一點,請查看如何在該程序中正確打開 UTF8 CSV。 如果您無法將數據轉換為程序正確處理的字符集。

很有幫助。 我正在使用 Excel 預覽文件。 當我在代碼編輯器中查看原始 csv 數據時,預期的字符就在那里,因此它與 Excel 處理文件的方式有關。 由於我在 Mac 上工作,並且使用 [Option] + [G] 輸入 © 符號,é 是 [Option] + [E] 等等。這可能是 Excel 的翻譯問題讀取文件。 \xEF\xBB\xBF添加到文件的開頭似乎已經成功了!

  • 如果您將 utf8 值存儲到聲明為 latin1 的列中,請先修復它。
  • 不要使用任何轉換例程。
  • 使用SELECT(hex)SHOW CREATE TABLE驗證表中的數據

更多: UTF-8 字符問題; 我看到的不是我存儲的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM