2015-10-14 108 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. 说了,我是不是能够与表的同一代码和同种