Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > .csv import ภาษาไทยหายไป, ภาษาไทยเข้า db ไม่ได้ รบกวนด้วยครับ



 

.csv import ภาษาไทยหายไป, ภาษาไทยเข้า db ไม่ได้ รบกวนด้วยครับ

 



Topic : 114909



โพสกระทู้ ( 24 )
บทความ ( 0 )



สถานะออฟไลน์




สวัสดีครับ
จะสอบถามเกี่ยวการ import file .csv ครับ

คือว่าตอนนี้ผมติดปัญหาตรงที่ ไม่สารมารถนำข้อมูลที่เป็นภาษาไทยเข้าได้ครับ

รูปนี้คือ ข้อมูลใน table ครับ
-column COMMENT ผม import มาจาก .csv ครับ
-column SUGGEST_PASS ผม ใส่ในข้อความลงตัวแปรเฉยๆ ครับ
1


$objArr[15] ตัวนี้แหละครับคือตัวปัญหา
2


ผมลองพยายามเดาๆ หาว่าเป้นที่เรื่องของ UTF8 หรือป่าว
3


ก็ได้ผลลัพธ์ตามนี้ครับ
4


สรุปสิ่งที่ผมทำคือ ผมสงสัยว่า พอนำข้อมูลไปใส่ db แล้วมันไม่รู้จัก เลยทำให้ข้อมูลที่รับเข้า เข้าไปได้บางส่วน
(ในที่นี้คือ "-") และผมเลยพยายามหาว่ามันเป็น utf8 หรือป่าว ก็เป็นไปตามนี้ครับ

จึงอยากจะรบกวนทุกท่าน ว่าต้องแก้ไขอย่างไรดีครับ



Tag : PHP, MySQL, HTML/CSS, Excel (Excel.Application)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-03-06 16:36:58 By : JedsadaNgow View : 2283 Reply : 3
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ขอดู Code เต็ม ๆ หน่อยครับ หรือไม่ลอง echo ค่าตัวแปร $strSQL ออกมาให้ดูหน่อยครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-08 09:20:04 By : mr.win
 


 

No. 2



โพสกระทู้ ( 24 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.win เมื่อวันที่ 2015-03-08 09:20:04
รายละเอียดของการตอบ ::
โค้ดทั้งหมดครับ
Code (PHP)
<?php 
	function __construct()
		{
		    header("content-type:text/html;charset=utf-8");
		}
		session_start();
?>
<html>
	<head>
	</head>
	<body>
		<?php
			// header("content-type:text/html;charset=utf-8");
			$name='maintenance_'.date('Y-m-d_hia').'.csv';

			if(copy($_FILES["FileMaintenance"]["tmp_name"],"../../Warehouse/File/".$name))
			{
				include('Connection.php');
			 	include('../Repository/MachineRepository.php');

			 	//get Username from Admin
				$strSQL = "SELECT USER_NAME FROM ADMIN WHERE ADMIN_ID = ". $_SESSION["UserId"];
				$objQuery = mysql_query($strSQL);
				$objResult = mysql_fetch_array($objQuery);
				$RecordName = $objResult['USER_NAME'];

				$objCSV = fopen("../../Warehouse/File/".$name, "r");
			
				fgets($objCSV); //skip frist row

				$i = 1;
				$StartDate;
				$EndDate;
				$JobType;
				$JobNo;
				while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
					if ($i < 5)
					{
						//Date
						if ($i  == 1)
						{
							$StartDate = $objArr[15];
							$EndDate = $objArr[16];
						}
						elseif ($i  == 2)
						{
							$JobType = $objArr[15];
						}
						elseif ($i  == 3)
						{
							$JobNo = $objArr[15];
						}
					}
					else
					{
						$strSQL = "INSERT INTO MAINTENANCE (JOB_ID,JOB_NO,JOB_TYPE,MC_ID,START_DATE,END_DATE,RUNTIME,JOB_DETAIL,ERROR_LOG,V1,V2,V3,V4,J1,J2,J3,J4,J5,J6,COMMENT,SUGGEST_PART,STATUS,RECORD_DATE,RECORD_BY) VALUES (";
						$strSQL .= "NULL, ";//JOB_ID
						$strSQL .= "'" . $JobNo . "', ";//JOB_NO
						$strSQL .= "'" . $JobType . "', ";//JOB_TYPE

						$MC_ID = GetMahineIdByName($objArr[1]);
						$strSQL .= $MC_ID . ", ";//$strSQL .= $objArr[] . ", ";//MC_ID

						$DateConverted = str_replace('/', '-', $StartDate);
						$DateConverted = date('Y-m-d', strtotime($DateConverted));
						$strSQL .= "'" . $DateConverted . "', ";//START_DATE

						$DateConverted = str_replace('/', '-', $EndDate);
						$DateConverted = date('Y-m-d', strtotime($DateConverted));
						$strSQL .= "'" . $DateConverted . "', ";//END_DATE
						$strSQL .= "'" . $objArr[2] . "', ";//RUNTIME
						$strSQL .= "'" . $objArr[13] . "', ";//JOB_DETAIL
						$strSQL .= "'" . $objArr[14] . "', ";//ERROR_LOG
						$strSQL .= CovertValue($objArr[3]) . ", ";//V1
						$strSQL .= CovertValue($objArr[4]) . ", ";//V2
						$strSQL .= CovertValue($objArr[5]) . ", ";//V3
						$strSQL .= CovertValue($objArr[6]) . ", ";//V4
						$strSQL .= CovertValue($objArr[7]) . ", ";//J1
						$strSQL .= CovertValue($objArr[8]) . ", ";//J2
						$strSQL .= CovertValue($objArr[9]) . ", ";//J3
						$strSQL .= CovertValue($objArr[10]) . ", ";//J4
						$strSQL .= CovertValue($objArr[11]) . ", ";//J5
						$strSQL .= CovertValue($objArr[12]) . ", ";//J6
						$strSQL .= "'" . $objArr[15] . "', ";//COMMENT
						$strSQL .= "'" . $objArr[16] . "', ";//SUGGEST_PART
						//$strSQL .= "'" . "ทดสอบ" . "', ";//SUGGEST_PART
						$strSQL .= "'" . $objArr[17] . "', ";//STATUS
						$strSQL .= "'" . date("Y-m-d") . "', ";//RECORD_DATE
						$strSQL .= "'" . $RecordName . "'); ";//$strSQL .= "'" . $objArr[] . "'); ";//RECORD_BY

						//mysql_query("SET NAMES UTF8");
						mysql_query("SET character_set_results=utf8");//ตั้งค่าการดึงข้อมูลออกมาให้เป็น utf8
						mysql_query("SET character_set_client=utf8");//ตั้งค่าการส่งข้อมุลลงฐานข้อมูลออกมาให้เป็น utf8
						mysql_query("SET character_set_connection=utf8");//ตั้งค่าการติดต่อฐานข้อมูลให้เป็น utf8
						echo $strSQL."<br>";

						//echo mb_detect_encoding($objArr[15])."<br>";

						//echo iconv("UTF-8", "UTF-8", $comment);;
						// echo $test."abc<br><br>";
						// var_dump(get_defined_vars());die;
						if (mysql_query($strSQL)){
							// echo "success";
						}else{
							mysql_error();
						}
					}
					
					++$i;
				}
				fclose($objCSV);
				die();
				echo "<script type='text/javascript'>
		                window.location='../NewItem.php?s=1';
		           </script>";
			}
			else
			{
				echo "<script type='text/javascript'>
		                window.location='../NewItem.php?ErrType=1';
		           </script>";
			}

			function CovertValue($Val)
			{
				if ($Val == '-')
				{
					return '0';
				}
				else
				{
					return $Val;
				}
			}
		?>
	</body>
</html>


ก็คือว่า ถ้าผมนำไฟล์ .xlsx ของลูกค้า save เป็น CSV (Comma delimited) (*.csv)
แล้ว import ไปเลย ก็จะ echo ได้มาเป็นแบบนี้ครับ

Code
INSERT INTO MAINTENANCE (JOB_ID,JOB_NO,JOB_TYPE,MC_ID,START_DATE,END_DATE,RUNTIME,JOB_DETAIL,ERROR_LOG,V1,V2,V3,V4,J1,J2,J3,J4,J5,J6,COMMENT,SUGGEST_PART,STATUS,RECORD_DATE,RECORD_BY) VALUES (NULL, 'US-1401012', 'PERIOD CHECK', 165, '2014-01-19', '2014-01-19', '6000 / 2949', '', '', 0, 1.0, 0.1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, ' - ควรตรวจเช็คJ3, ควรตรวจเช็ค J4 (Bearing)', '', '', '2015-03-08', 'admin');


ผลลัพธ์คือ ภาษาไทย ไม่เข้า db ครับ

แต่ถ้าผม save เป็น csv แล้ว นำไปเปิดใน notepad แล้ว save เป็น UTF 8 อีกที ก็จะ echo ออกมาเป็นได้แบบนี้ครับ

Code
INSERT INTO MAINTENANCE (JOB_ID,JOB_NO,JOB_TYPE,MC_ID,START_DATE,END_DATE,RUNTIME,JOB_DETAIL,ERROR_LOG,V1,V2,V3,V4,J1,J2,J3,J4,J5,J6,COMMENT,SUGGEST_PART,STATUS,RECORD_DATE,RECORD_BY) VALUES (NULL, 'US-1401012', 'PERIOD CHECK', 165, '2014-01-19', '2014-01-19', '6000 / 2949', '', '', 0, 1.0, 0.1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, ' - เธ„เธงเธฃเธ•เธฃเธงเธˆเน€เธŠเน‡เธ„J3, เธ„เธงเธฃเธ•เธฃเธงเธˆเน€เธŠเน‡เธ„ J4 (Bearing)', '', '', '2015-03-08', 'admin');


ผลลัพธ์คือ ภาษาไทย เข้า db ครับ

แต่ว่าผมอยากให้ User แค่ save เป็น .csv แล้วก็ import เลยอ่ะครับ



ประวัติการแก้ไข
2015-03-08 14:19:01
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-08 14:17:53 By : JedsadaNgow
 

 

No. 3



โพสกระทู้ ( 24 )
บทความ ( 0 )



สถานะออฟไลน์


เพิ่มเติมครับ

ตอนนี้ผมใช้คำสั่ง

Code (PHP)
iconv(mb_detect_encoding($text, mb_detect_order(), true), "UTF-8", $text);


ปรากฎว่าได้ครับ ในส่วนของเครื่อง dev
แต่พอเอาขึ้น Server มันไม่ได้ครับ

พอ echo ดู ได้ตามนี้ครับ

เครื่อง Dev
INSERT INTO MAINTENANCE (JOB_ID,JOB_NO,JOB_TYPE,MC_ID,START_DATE,END_DATE,RUNTIME,JOB_DETAIL,ERROR_LOG,V1,V2,V3,V4,J1,J2,J3,J4,J5,J6,COMMENT,SUGGEST_PART,STATUS,RECORD_DATE,RECORD_BY) VALUES (NULL, 'US-1401012', 'PERIOD CHECK', 165, '2014-01-19', '2014-01-19', '6000 / 2949', '', '', 0, 1.0, 0.1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, ' - เธ„เธงเธฃเธ•เธฃเธงเธˆเน€เธŠเน‡เธ„J3, เธ„เธงเธฃเธ•เธฃเธงเธˆเน€เธŠเน‡เธ„ J4 (Bearing)', '', '', '2015-03-09', 'admin');


เครื่อง Server
INSERT INTO MAINTENANCE (JOB_ID,JOB_NO,JOB_TYPE,MC_ID,START_DATE,END_DATE,RUNTIME,JOB_DETAIL,ERROR_LOG,V1,V2,V3,V4,J1,J2,J3,J4,J5,J6,COMMENT,SUGGEST_PART,STATUS,RECORD_DATE,RECORD_BY) VALUES (NULL, 'US-1401012', 'PERIOD CHECK', 6, '2014-01-19', '2014-01-19', '6000 / 2949', '', '', 0, 1.0, 0.1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, ' - ', '', '', '2015-03-08', 'admin');

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-03-09 01:13:52 By : JedsadaNgow
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : .csv import ภาษาไทยหายไป, ภาษาไทยเข้า db ไม่ได้ รบกวนด้วยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่