phpmyadmin 导出表格到CSV,繁体中文变成问号
Posted
技术标签:
【中文标题】phpmyadmin 导出表格到CSV,繁体中文变成问号【英文标题】:phpmyadmin Export table to CSV, Traditional Chinese characters turn into question marks 【发布时间】:2013-03-11 23:48:44 【问题描述】:我正在开发一个双语(英文和繁体中文)网站,其内容存储在数据库中。我通常将表导出为 CSV 并批量输入数据,然后将其重新导入表中。中文字符显示在数据库和网站中。但是,每当我导出带有繁体中文字符的表格时,它们就会变成问号。
我尝试将整个表以及各个列的排序规则更改为各种设置(大、二进制、utf8 等),但似乎没有任何效果。我也尝试在导出界面中使用字符集,但它也不能解决问题。
这是 phpmyadmin 的问题还是有一些设置可以解决这个问题?非常感谢您的帮助。
【问题讨论】:
这里有同样的问题..仍未解决.. 【参考方案1】:我有点解决了将表格导出为包含中文的 csv 的问题。但不是真的用phpmyadmin。你可以使用这个导出脚本来导出你想要的包含中文的表格,它会正常显示
<?php
/*
* PHP code to export mysql data to CSV
* http://salman-w.blogspot.com/2009/07/export-mysql-data-to-csv-using-php.html
*
* Sends the result of a MySQL query as a CSV file for download
*/
/*
* establish database connection
*/
$conn = mysql_connect('MYSQL_HOST', 'MYSQL_USERNAME', 'MYSQL_PASSWORD') or die(mysql_error());
mysql_select_db('MYSQL_DATABASE', $conn) or die(mysql_error($conn));
mysql_query("SET character_set_results=utf8", $conn);
/*
* execute sql query
*/
$query = sprintf('SELECT * FROM MYSQL_TABLE');
$result = mysql_query($query, $conn) or die(mysql_error($conn));
/*
* send response headers to the browser
* following headers instruct the browser to treat the data as a csv file called export.csv
*/
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=export.csv');
echo "\xEF\xBB\xBF";
/*
* output header row (if atleast one row exists)
*/
$row = mysql_fetch_assoc($result);
if ($row)
echocsv(array_keys($row));
/*
* output data rows (if atleast one row exists)
*/
while ($row)
echocsv($row);
$row = mysql_fetch_assoc($result);
/*
* echo the input array as csv data maintaining consistency with most CSV implementations
* - uses double-quotes as enclosure when necessary
* - uses double double-quotes to escape double-quotes
* - uses CRLF as a line separator
*/
function echocsv($fields)
$separator = '';
foreach ($fields as $field)
if (preg_match('/\\r|\\n|,|"/', $field))
$field = '"' . str_replace('"', '""', $field) . '"';
echo $separator . $field;
$separator = ',';
echo "\r\n";
?>
此代码是从以下来源复制和修改的:
-
http://salman-w.blogspot.hk/2009/07/export-mysql-data-to-csv-using-php.html
When exported to CSV russian characters won't display
原来问题不在于 csv 文件,而在于 excel。不管 csv 文件的编码是什么,excel 总是以 ASCII 格式打开,这就搞砸了中文。以上代码将
-
将csv导出为UTF-8编码,这样
mysql_query("SET character_set_results=utf8", $conn);
就可以显示中文了
使用echo "\xEF\xBB\xBF";
强制 excel 以 UTF-8 格式打开 csv
虽然这有点解决问题,但如果有人可以通过 phpmyadmin 弄清楚如何做到这一点,而不需要自定义导出脚本,那就太好了。
【讨论】:
以上是关于phpmyadmin 导出表格到CSV,繁体中文变成问号的主要内容,如果未能解决你的问题,请参考以下文章
phpmyadmin 导出 CSV 到 excel 删除数据
为啥最新的 phpmyadmin 删除了 sql 作为导出格式?