php處理csv亂碼問題

2021-09-30 05:05:19 字數 1165 閱讀 2306

csv是comma separter value的縮寫,其檔案型別是「逗號分格」,用來儲存一些位址薄不錯,依計算機原來的設定,如果直接點選該檔案,計算機將以excel的模式開啟該檔案.但這樣做的後果是出現中文亂碼,因為csv檔如果以excel開啟,由於計算機檔案資料轉換的原因,會將其crc之數值改做科學記號方式儲存,而造成檔案中的 crc值發生錯誤.後果很嚴重...不過你可以用記事本或者用word來開啟它,這樣開啟是沒有亂碼的,但那些排版就亂七八糟了...看得很不爽...

究其根本,就是csv不能開啟utf-8編碼的文件,而記事本和word則可以...

而用php來編寫支援多國語言網頁的時候,資料交換時用utf-8會很方便,但這樣一來就跟cvs衝突了

先參考乙個從網上找來的例子:

<?php

$t_text = '要輸出的csv檔案';

header('cache-control: private');

header('content-disposition: attachment; filename=test.csv');

//如果mb_convert_encoding函式存在則用此函式來轉編碼,前提是需要安裝mbstring包

if(function_exists('mb_convert_encoding'))

//如果iconv函式存在則用此函式來轉編碼

elseif(function_exists('iconv'))

//直接從utf-8轉,這個貌似不靈...

else

?>

例子上完了,但這樣並不會將我的網頁轉換亂碼成功,為什麼我不知道,但我從中得到了啟發

下面來兩個函式,expchangecode是匯出時將utf-8格式編碼轉換成cp936,cp936是gbk的另一種說法.而impchangecode則是匯入時將cp936格式編碼轉換成utf-8,而上面例子上的chr(255).chr(254)則是給文件加乙個bom(貌似微軟文件專用,靠..)在下面兩個函式中則不使用了,因為加上會造成中文字型消失.我也就是因為這個東東搞到半死...

function expchangecode($str)

function impchangecode($str)

用的時候也很簡單,只要echo expchangecode($str)就可以將沒有亂碼的csv格式的文件輸出來了,輸入因為程式不同,自己去用例子測試了...

CSV亂碼問題

原因 當從http 的response輸出csv檔案的時候,設定為utf8的時候預設是不帶bom的,但是windows的excel是使用bom來確認utf8編碼的,所有需要把bom寫到檔案的開頭。微軟在 utf 8 中使用 bom 是因為這樣可以把 utf 8 和 ascii 等編碼明確區分開。否則...

解決PHP匯出CSV檔案中文亂碼問題

英文名 comma separator value 逗號分隔值 常用來資料轉換的中間檔案存在,比如 從mysql中匯出資料到csv中。在web系統中經常遇到要匯出報表資料,也會用到csv格式,使用utf 8編碼匯出csv檔案,開啟後裡邊的中文成了亂碼 windows下csv檔案預設與microsof...

Python讀取 csv檔案中文亂碼處理

需求 按行解析讀取csv檔案存入關係型資料庫 主要是中文字型解析 遇到的問題 直接解析出來的資料為list形式,而且編碼格式為unicode 解決問題 前提了解 中文編碼的規則 gb2312字串在python內部的表示是unicode編碼,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將...