ค่าใน database ถูกเก็บเป็น tis620_thai_ci เวลา export เป็น csv ภาษาไทยกลายเป็นภาษาต่างด้าว กำหนดเป็น icov และ charset ให้เป็น utf8 แล้วก็ยังไม่ได้
สอบถามค่ะ ค่าใน database ถูกเก็บเป็น tis620_thai_ci
เวลา export เป็น csv ภาษาไทยกลายเป็นภาษาต่างด้าว ลองพยายาม icov และ charset ให้เป็น utf8 แล้วก็ยังไม่ได้ค่ะ จะต้องกำหนดอย่างไรค่ะ
เป็น php Framework CodeIgniter ค่ะ
Code (PHP)
public function exportCSV(){
// file name
$filename = 'customer_'.date('Ymd').'.csv';
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/csv;charset=utf-8");
// get data
$customerTech = $this->home_model->customer_tech_call_csv();
// file creation
$file_url = ('./doc/'.$filename);
$file = fopen($file_url, 'w');
fputs($file, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
$header = array("contact type id","cust_problem","cust_account_no","cust_fullname","cust_province","cluster","cluster_name","RO","sys_date_add");
fputcsv($file, $header);
foreach ($customerTech as $key=>$line){
fputcsv($file,$line);
}
fclose($file);
//exit;
}
Tag : PHP, MySQL, CodeIgniter
Date :
2018-03-29 09:17:02
By :
Baitong_ch
View :
2470
Reply :
4
ขอดู code module customer_tech_call_csv หน่อยครับ
Date :
2018-03-29 10:12:13
By :
Pong Thep
ตอบความคิดเห็นที่ : 1 เขียนโดย : Pong Thep เมื่อวันที่ 2018-03-29 10:12:13
รายละเอียดของการตอบ ::
function customer_tech_call_csv(){
$response = array();
// Select record
$q = $this->db->select
("t.contact_type, c.cust_problem , c.cust_account_no ,
c.cust_fullname , c.cust_province , c.cluster, c.cluster_name , c.RO ,
c.sys_date_add
");
$q = $this->db->from("customer_tech_call c, contact_type t");
$q = $this->db->where("DATE(sys_date_add ) = DATE_ADD( CURDATE( ) , INTERVAL -2 DAY )
AND c.contact_type_id IN ( 12, 4, 7, 8, 5, 11, 3, 9, 6, 10 )
AND t.id = c.contact_type_id");
$q = $this->db->get();
$response = $q->result_array();
return $response;
}
Date :
2018-03-29 10:18:30
By :
Baitong_ch
covert ที่ mysql ก่อนครับ Example
Code (PHP)
// head
header('Content-Type: text/html; charset=utf-8');
putenv("NLS_LANG=AMERICAN_AMERICA.TH8TISASCII");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'");
mb_convert_encoding($Do, 'UTF-16LE', 'UTF-8'); /// สำคัญมาก และ DB ผม Unicode รองรับ Excel 2010+++
$Do=" SELECT HisID,DateIN,StaffID,NameLao,DeptName,Symptom,Result
FROM clinicdb.report_all
WHERE DateIN BETWEEN '".$DateIN."' AND '".$DateEnd."'
ORDER BY HisID ASC ";
$Bw=mysql_query($Do)
/// ส่วนเขียนแบบ php oop ก็ต่างนิดๆน่าจะได้
Date :
2018-03-29 10:48:55
By :
Hararock
ตอนนี้สามารถออก csv เป็นภาษาไทยแล้วค่ะ
Code (PHP)
foreach ($customerTech AS $rs){
fputcsv($file, array(
iconv('UTF-8', 'TIS-620', $rs['contact_type']),
iconv('UTF-8', 'TIS-620', $rs['cust_problem']),
iconv('UTF-8', 'TIS-620', $rs['cust_account_no']),
iconv('UTF-8', 'TIS-620', $rs['cust_fullname']),
iconv('UTF-8', 'TIS-620', $rs['cust_province']),
iconv('UTF-8', 'TIS-620', $rs['cluster']),
iconv('UTF-8', 'TIS-620', $rs['cluster_name']),
iconv('UTF-8', 'TIS-620', $rs['RO']),
iconv('UTF-8', 'TIS-620', $rs['sys_date_add'])
),',', ' ');
}
ขอบคุณค่ะ
ประวัติการแก้ไข 2018-03-29 15:29:37
Date :
2018-03-29 11:13:23
By :
Baitong_ch
Load balance : Server 04