나는 핵심 PHP 코드를 사용하여 Excel로 데이터를 내보낼 수 있습니다. 다음은 내 코드입니다 :
PHP는 mysql에서 Excel로 UTF - 8 데이터를 내보내기
header('Content-Type: text/html; charset=utf-8');
mysql_connect("localhost","root","");
mysql_select_db("test");
//----------------------------------------
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'");
//----------------------------------------
$filename = "excelwork.xls";
$exists = file_exists('excelwork.xls');
if($exists)
{
unlink($filename);
}
$filename = "excelwork.xls";
$fp = fopen($filename, "wb");
$sql = "select * from test";
$result = mysql_query($sql);
$$insert = "";
$insert_rows = "";
for ($i = 1; $i < mysql_num_fields($result); $i++)
{
$insert_rows .= mysql_field_name($result,$i) . "\t";
}
$insert_rows.="\n";
fwrite($fp, $insert_rows);
while($row = mysql_fetch_row($result))
{
$insert = $row[1]. "\t" .$row[2]. "\t".$row[3]. "\t".$row[4]. "\t".$row[5];
$insert .= "\n"; // serialize($assoc)
fwrite($fp, $insert);
}
if (!is_resource($fp))
{
echo "cannot open excel file";
}
echo "success full export";
fclose($fp);
============이 내 MySQL의 테이블 ================
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`status` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
--
-- Dumping data for table `test`
--
INSERT INTO `test` (`id`, `name`, `status`) VALUES
(1, 'सजल', 1),
(2, 'सूर्या', 1),
(3, 'धनश्री', 1),
(4, 'मनीष', 1),
(5, 'राहुल', 1);
출력 엑셀 파일이 출력 준다 :
सजल
सूरà¥à¤¯à¤¾
धनशà¥à¤°à¥€
मनीष
राहà¥à¤²
을하지만 XLS로를 이용하면 phpMyAdmin 보내면 출력 올 :
सजल
सूर्या
धनश्री
मनीष
राहुल
내 코드가 잘못되었다는 것을 알려주십시오. 나는 많은 것을 시도하고, 많은 포스트를 수색했다.
감사
네 UTF8로의 설정 ---'name'의 VARCHAR (255) 문자 집합을 utf8 COLLATE의 utf8_bin NULL NOT, – Sajal
당신은 무엇을 보는가 텍스트 편집기? phpmyadmin에서 내 보낸 csv와 비교하십시오. –
@ Marcin Krawiec- 두 파일 모두 csv가 아닙니다. 워드 패드에서 두 파일을 모두 열면 문자가 á¤¸à ¥, ठ° à ¥ यŠ¤¾ 종류로 표시됩니다. – Sajal