2015-10-14 38 views
0

所以我發現一個腳本從數據庫表中獲取一個csv文件。數據庫表到csv字符編碼

<?php 

header('Content-Type: text/csv; charset=utf-8 '); 
header('Content-Disposition: attachment; filename=data.csv'); 

// create a file pointer connected to the output stream 
$output = fopen('php://output', 'w'); 

// output the column headings 
fputcsv($output, array('id','Name', 'Email', 'age','tekens')); 

// fetch the data 
mysql_connect('localhost', 'name', 'pass'); 
mysql_select_db('name'); 
$rows = mysql_query('SELECT * FROM info'); 

// loop over the rows, outputting them 
while ($row = mysql_fetch_assoc($rows)) 

fputcsv($output, $row); 

?> 

該代碼的作品,但我有麻煩的人物。我的數據庫表如下所示: Database table

這就是我希望它在我的csv文件中。但是我的csv文件看起來像這樣:Csv file

在csv文件中,Хой顯示爲「???」。有沒有辦法來解決這個問題?

對不起,如果它是重複的。我嘗試了很多不同的東西。

+0

http://stackoverflow.com/questions/279170/utf-8-all-the-way-through/279279 ......我這個問題/答案已經在一個標籤中打開了一年多了,而且我仍然經常將URL複製/粘貼到註釋中* *嘆息* * ... *提示:您沒有在db上設置charset連接器本身* – CD001

+0

http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php ...和* mysql _ \ **庫已棄用。 – CD001

+0

你嘗試設置'mysql_query(「SET character_set_results ='utf8',character_set_client ='utf8',character_set_connection ='utf8',character_set_database ='utf8',character_set_server ='utf8'」,$ conn);'連接好嗎? –

回答

0

好球員,我從CD001的幫助固定它複製在我身邊同樣的問題。我改變了的事情是:

// fetch the data 
mysql_connect('localhost', 'name', 'pass'); 
mysql_select_db('name'); 
$rows = mysql_query('SELECT * FROM info'); 

// fetch the data 
$link = mysql_connect('localhost', 'name', 'pass'); 
mysql_set_charset('utf8',$link); 
mysql_select_db('name'); 
$rows = mysql_query('SELECT * FROM info'); 
0
  1. 我不認爲與CSV的第一個空行的問題(之前被設定甚至頭)是由於UTF8字符
  2. 一些如何\ n被插入在CSV作爲第一個字符甚至在使用fputcsv($output, array('id','Name', 'Email', 'age','tekens'));設置標題之前,您可以通過在文本編輯器(如notpad)中打開csv來輕鬆實現。
  3. 您可以刪除while循環以避免任何有關utf8字符的混淆,並檢查\ n是從哪裏寫入data.csv中的第一個字符。
  4. 說了,我是不是能夠與表的同一代碼和同種