下載CSV, MS EXCEL開啟亂碼解決方案
MS的Office Excel開啟CSV檔案預設是以ANSI, UNICODE格式開啟的(對舊版本是這樣, 2007好像已經能根據BOM來識別UTF-8了, 但2003還不行)
下面來說如何針對不同的office版本EXCEL都來相容CSV
思路就是:將你的編碼轉成UTF-16LE後, 再加一個UNICODE的BOM頭”/xFF/xFE”, 最後下載, 這樣下載下來的CSV就是UNICODE格式的了
PHP程式例子:
$str4File = iconv(‘UTF-8′, ‘UTF-16LE’, $content);
//轉碼成utf-16的小尾序(http://zh.wikipedia.org/wiki/UTF-16),
這是微軟和linux系統使用的UNICODE儲存文字格式, 蘋果系統使用的是大尾序儲存文字格式, 那樣就需要用UTF-16BE,
而bom頭使用FE FF
$str4Download = gzencode(“/xFF/xFE”.$str4File);//加入bom頭, 壓縮內容
header(‘Content-type: text/csv; charset=UTF-16LE’);
header( “Content-Length: “.strlen($str4Download) );
header( “Content-Disposition: attachment; filename=/”$filename/”" );
echo $str4Download;
有一點要注意:
就是Unicode編碼的.CSV檔案可能不支援”,”分割,需要”/t”空格來分割
這是另外一篇介紹 解決CSV亂碼的文章, 可參考:http://wangblog.org/2007/12/utf-8unicode.html
介紹: UTF-8, UTF-16與UNICODE的關係
所謂“utf-8”“utf-16”只是UCS Transformation Format,只是UNICODE的一種表現形式, UCS 即是 Unicode Character Set.
更詳細的資料, 參考wiki
http://blog.fengruzhuo.com/?p=295