2015-05-21 2 views
0

Я пытаюсь экспортировать CSV-файл, который хорошо работает при экспорте. Но есть некоторые проблемы, когда я открываю файл csv, есть некоторые изменения текста на «??????». Но в phpmyadmin все нормально. Текст кодируется utf-8.php csv показать вопросительные знаки

Вот мой код

<?php 
$day = $_POST['day']; 

$starttime = "'".$day.' 00:00:00'."'"; 
$stoptime = "'".$day.' 23:59:59'."'"; 

$uname = "*********"; 
$pass = "*********"; 
$host = "*********"; 
$database = "*********"; 

$connection=mysql_connect($host,$uname,$pass); 

echo mysql_error(); 
$selectdb=mysql_select_db($database) or die("Database could not be selected"); 
$result=mysql_select_db($database)or die("database cannot be selected <br>"); 

$output = ""; 
$table = "***********"; 
$sql = mysql_query("SELECT * FROM $table WHERE applytime BETWEEN $starttime AND $stoptime"); 
$columns_total = mysql_num_fields($sql); 
$rowcount = mysql_num_rows($sql); 

if($rowcount >= 1) 
{ 
for ($i = 0; $i < $columns_total; $i++) { 
    $heading = mysql_field_name($sql, $i); 
    $output = '"'.$heading.'",'; 
} 
$output .="\n"; 

while ($row = mysql_fetch_array($sql)) { 
for ($i = 0; $i < $columns_total; $i++) { 
$output .='"'.$row["$i"].'",'; 
} 
$output .="\n"; 
} 

$filename = "myFile.csv"; 

header("content-type:application/csv;charset=UTF-8"); 
header('Content-Disposition: attachment; filename='.$filename); 

echo $output; 
exit; 
} 

else 
{ 
    echo("There is no record Today"); 
} 

?> 

Пожалуйста, помогите спасибо.

+0

Как вы открываете файл? Возможно, программа, которую вы используете, не понимает текст UTF-8, поэтому он показывает '?' Вместо некоторых символов – Barmar

+0

просто щелкните по столбцу или увеличите ширину столбца в открытом CSV-файле. –

+0

@SumanSingh, что будет с вашим решением? –

ответ

1

Я не вижу вызова функции mysql_set_charset.

mysql_set_charset('utf8'); 

Было ли это упущением надзора? Или это было целенаправленно опущено, поскольку уже было подтверждено, что набор символов клиента настроен соответствующим образом без этого?


Почему мы писать код, который использует устаревшееmysql_ функции, когда оба mysqli и PDO интерфейсов доступны? И почему мы пишем код, который уязвим для SQL Injection, включив потенциально опасные значения в текст SQL?