Я написал функцию (в WordPress) для загрузки файла CSV, как показано ниже.
function download_csv(){
if( !empty($_GET['filename']) && !empty($_GET['downloadname']) && file_exists( trailingslashit( wsoe_upload_dir() ).$_GET['filename'].'.csv' ) && wsoe_is_shop_manager() ) {
$download_filename = $_GET['downloadname'];
$filename = trailingslashit( wsoe_upload_dir() ).$_GET['filename'].'.csv';
$charset = get_option('blog_charset');
$settings = self::advanced_option_settings();
$file = fopen( $filename, 'r' );
$contents = fread($file, filesize($filename));
fclose($file);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Description: File Transfer');
header('Content-Encoding: '. $charset);
header('Content-type: text/csv; charset='. $charset);
header("Content-Disposition: attachment; filename=$download_filename.csv");
header("Expires: 0");
header("Pragma: public");
$fh = @fopen( 'php://output', 'w' );
if( !empty($settings['wsoe_fix_chars']) ){
/**
* This is a fix for Microsoft Excel. It may happen that some weird characters
* may appear while viewing the csv on excel with MAC OS.
*/
$contents = mb_convert_encoding( $contents, 'UTF-16LE', $charset );
$contents = chr(255) . chr(254).$contents; // Add byte order mark
}
fwrite( $fh, $contents );
fclose($fh);
exit();
}
}
Когда csv экспортируется, знак фунта (£) не отображается должным образом при просмотре. Я проверил это во всех редакторах, включая Excel, Notepad ++, OpenOffice и т. Д.
Это выглядит так
Кто-нибудь может дать мне знать, как я могу решить эту проблему?
Задача ещё не решена.
Других решений пока нет …