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,027

HOME > PHP > PHP Forum > มีปัญหากับการแสดงข้อมูลภาษาไทยจาก Sql Server ใช้ php ค่ะ รบกวนขอคำแนะนำจากพี่ๆ ด้วยค่ะ



 

มีปัญหากับการแสดงข้อมูลภาษาไทยจาก Sql Server ใช้ php ค่ะ รบกวนขอคำแนะนำจากพี่ๆ ด้วยค่ะ

 



Topic : 129268



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



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




sqlsrv

ดังรูปค่ะ มีปัญหากับการแสดงข้อมูลเป็นภาษาไทยค่ะ

connect โดยใช้ odbc ใน sql server collection เป็น THAI_CI_AS เเล้ว ค่ะ

Code (PHP)
<?php

   include '../controllers/connect_ctrl_medical.php';

 $Con = "DRIVER={SQL Server};SERVER=$servername;DATABASE=$dbname;AutoTranslate=no"; 

   $objConn = odbc_connect($Con,$username, $password) or die("Error Connect to Database");

            if($objConn)
                    {
                       //echo "Database Connected SQL SERVER OK.";
                    }
                    else
                    {
                        echo "Database Connect Failed.!!";
                    }
                    
    ?>


ข้อมูลที่ไม่ใช่ภาษาไทยแสดงออกมาปกติค่ะ ส่วนข้อมูลที่เป็นภาษาไทยแสดงออกมาเป็น ??????????????

ลองเพิ่มบรรทัดนี้ไปก็ไม่ได้ค่ะ
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> เปลี่ยนเป็น tis-620 ก็ไม่ได้

ลองใช้ iconv

$utf8THSUB = iconv("tis-620", "utf-8", $thstrSUB); ลองสลับไปสลับมาก็ยังไม่ได้อีกค่ะ

รบกวนขอคำแนะนำจากพี่ๆ ด้วยค่ะ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-10-18 16:33:39 By : natthanichaB View : 5803 Reply : 15
 

 

No. 1



โพสกระทู้ ( 9,553 )
บทความ ( 2 )



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


Field type เป็นะไรครับ
Nvarchar
หรือ
Varchar

ภาษาไทยจะใช้ Unicode nvarchar

น่าจะผิดตั้งแต่นำข้อมูลเข้า

ถ้ายังแก้ไม่ได้ผมกลับบ้านก่อนจะสอนวิธี convert ให้






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-18 19:02:54 By : Chaidhanan
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-10-18 19:02:54
รายละเอียดของการตอบ ::
เป็น Nvarchar ค่ะ
บางหน้าลองใช้ iconv ในหน้าเดียวกัน สองที่ที่แสดงภาษาไทย อันนึง ขึ้นเป็นภาษาไทยได้ ส่วนอีกที่แสดง ??????
รบกวนขอคำแนะนำด้วยนะคะพี่

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-19 08:29:31 By : natthanichaB
 

 

No. 3



โพสกระทู้ ( 9,553 )
บทความ ( 2 )



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


แสดงโค๊ดทั้งสองที่ ที่ได้และไม่ได้ มาดูหน่อยครับ คือถ้าได้ก็ควรจะได้ทั้งสองที่
น่าจะลองเปรียบเทียบ ทั้งสองที่ดูว่าอะไรต่างกัน

และก็ขอดูโค๊ดที่เอาข้อมูลภาษาไทยเข้า database ด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-19 09:13:52 By : Chaidhanan
 


 

No. 4



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



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


ชื่อแสดงภาษาไทยได้ค่ะ
nameth

Code นะคะ
namethc

ประเภทชุด ต้องแสดงคำว่า ขาว หรือ ช่าง แต่ออกมาเป็น ???
type

Code นะคะ
typec2

set header
tagheaderset

แสดงชื่อกับชุด อยู่ในหน้าเดียวกันนะคะ
อันที่เป็นหัวข้อคำถาม จะอยู่อีกหน้านึง ติดปัญหาเหมือนกันค่ะพี่


ประวัติการแก้ไข
2017-10-19 09:30:25
2017-10-19 09:33:43
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-19 09:28:18 By : natthanichaB
 


 

No. 5



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



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


ตอบความคิดเห็นที่ : 3 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-10-19 09:13:52
รายละเอียดของการตอบ ::
ขอดูโค๊ดที่เอาข้อมูลภาษาไทยเข้า database ?
Ans. ข้อมูลมีอยู่ใน Database แล้วค่ะ แค่ต้องการดึงขึ้นมาโชว์ ซึ่งใน Database sql server เป็น ภาษาไทยค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-19 09:42:16 By : natthanichaB
 


 

No. 6



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



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


ตอบความคิดเห็นที่ : 5 เขียนโดย : natthanichaB เมื่อวันที่ 2017-10-19 09:42:16
รายละเอียดของการตอบ ::

include ไฟล์ connect database --> ตรงนี้ ตามที่ connect odbc ข้างบนเลยค่ะ

$strSQL= "SELECT * FROM .......... WHERE id = '".$getID."'";

$objExec = odbc_exec($objConn, $strSQL) or die ("Error Execute {".$strSQL."}");

if ($objExec) {

while ($row = odbc_fetch_array($objExec)){

$empSizeShoes = $row['SizeShoes'];
$empSizeType = $row['SizeType '];

}
}

***บางบรรทัดขอใส่เป็นตัวแปร..........เอานะคะ***

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-19 09:47:35 By : natthanichaB
 


 

No. 7



โพสกระทู้ ( 9,553 )
บทความ ( 2 )



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


มี ssms ไหมครับ (sql server management tools)
เปิดตาราง ดูว่าอ่านไทยได้ทั้งสอง ฟีลด์ไหม
เอาตรงนี้ก่อนถ้า ssms อ่านไทยได้ทั้งสองฟีลด์ ก็ต้องดู fieldtype ของทั้งสอง ว่าเป็น nvarchar เหมือนกันไหม

ผมสงสัย แล้วชื่อไทยของตัวคุณเองเอาเข้าไปตอนไหน หรือเอาเข้าไปตรงๆ จาก ssms ไม่ได้ผ่าน php


ประวัติการแก้ไข
2017-10-20 05:05:38
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-19 10:35:44 By : Chaidhanan
 


 

No. 8



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



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


ตอบความคิดเห็นที่ : 7 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-10-19 10:35:44
รายละเอียดของการตอบ ::
มีค่ะ ssms sql server 2008 ลองคิวรี่ข้อมูลออกมาดู ใน sql server เป็นภาษาไทย ค่ะ ไฟล์ไทด์เป็น nvarchar ค่ะ การนำเข้าข้อมูลไม่ได้ผ่าน php ตรงนี้มีผลไหมค่ะ ตรง collection set ก่อน ค่ะ เป็น THAI_CI_AS

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-19 12:15:17 By : natthanichaB
 


 

No. 9



โพสกระทู้ ( 9,553 )
บทความ ( 2 )



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


เรามาทำความเข้าใจใหม่กันก่อนนะครับ ผมเองก็สับสนไม่ได้เจอปัญหานานแล้ว
และไม่ได้ใช้ odbc ซะด้วย ใช้แต่คำสั่ง sqlsrv พอดีไปเปิด ไฟล์เก่าๆ ของจริงดู

1 set charset ใน php_ini หรือ ใช้คำสั่ง (แนะนำให้ใช้คำสั่ง ไม่ต้องไปยุ่งกับ php.ini )
Code (PHP)
ini_set('mssql.charset', 'utf-8');


2 รูปแบบของ collation ไม่ว่าชนิดใด จะไม่มีผลกับ fieldtype 3 ตัวนี้ nvarchar, nchar, ntext
เพราะทั้ง 3 ตัวนี้เก็บข้อมูลในรูปแบบ unicode ซึ่งรองรับ ทุกภาษา ที่เป็น utf-8

3 ต้องนำเข้าข้อมูลโดยต้องมี N นำหน้าข้อมูลเพื่อบอกว่าเป็น unicode เช่น N'ข้อมูล ที่เป็น utf-8'
ใน ssms กรณีใช้ tools edit ใส่ให้อัตโนมัต

4 ต้องนำเสนอข้อมูลบน browser โดยกำหนด head meta charset='utf-8'
โดยไม่จำเป็นต้องใช้ iconv ในการแปลงข้อมูล เพราะข้อมูลเป็น utf-8 อยู่แล้ว
Code (PHP)
<!doctype html>
<html>
  <head>
    <meta charset="utf-8" />


ที่นี้อยากศึกษา odbc_connect เกี่ยวกับกำหนด client charset เป็น utf-8 ลองดูตัวอย่างนี้
http://www.easysoft.com/support/kb/kb01072.html
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-20 06:22:20 By : Chaidhanan
 


 

No. 10



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



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


ตอบความคิดเห็นที่ : 9 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-10-20 06:22:20
รายละเอียดของการตอบ ::
ขอบคุนสำหรับคำแนะนำนะคะพี่

นู๋ใช้ odbc connect sql server เหมือนเดิม หน้า connect เพิ่ม Client_CSet=UTF-8;Server_CSet=Windows-1251

นู๋ใช้วิธีแก้โดย ตอนที่ Query = "SELECT convert(varchar, ฟิลด์ที่มีไทด์เป็น Nvarchar) AS ตั้งชื่อฟิลด์ใหม่ FROM ชื่อเทเบิล";

แล้วหน้า แสดงข้อมูล Set <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

ใช้ iconv -> $aconvert = iconv("tis-620", "utf-8" $a);

echo $aconvert

ก็ได้ข้อมูลที่เป็นภาษาไทยเลยค่ะ

ขอบคุณคำแนะนำของพี่มากๆ ค่ะ เพื่อใครเจอปัญหานี้ลองเอาวิธีนี้ไปใช้ดูนะคะ




ประวัติการแก้ไข
2017-10-20 12:02:42
2017-10-20 12:43:33
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-20 12:02:00 By : natthanichaB
 


 

No. 11



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

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

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

การใช้ iconv ถือว่ายังไม่ใช้วิธีที่ถูกต้องสำหรับภาษาไทยครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-20 13:29:38 By : mr.win
 


 

No. 12



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



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


ตอบความคิดเห็นที่ : 11 เขียนโดย : mr.win เมื่อวันที่ 2017-10-20 13:29:38
รายละเอียดของการตอบ ::

แล้วพอจะมีวิธีไหนบ้างคะ จะได้ลองหลายๆ วิธี ที่ได้ค่าในการอ่านภาษาไทยถูกต้อง

พอดีเวลา นู๋ connect กับ sql server ใช้ odbc connect ได้เท่านั้นค่ะ ลองใช้ sqlsrv แล้วไม่ได้ ก้อเลยใช้ odbc แทน




ประวัติการแก้ไข
2017-10-20 14:32:19
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-20 13:52:41 By : natthanichaB
 


 

No. 13



โพสกระทู้ ( 1,521 )
บทความ ( 2 )

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

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

เพิ่ม N หน้าชื่อ Field ที่ Select ลองดูนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-20 14:46:43 By : Krungsri
 


 

No. 14



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

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

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


จริงๆ ควรจะเช็คก่อนตอน insert นั้นใส่ N ไหม
จากนั้น เช็คไฟล์ php ว่า file encoding เป็น utf-8 อยู่หรือว่าเป็น ansi (western) แค่ header กำหนด char set มันไม่พอ

แม้แต่ไฟล์ที่เป็น form ส่งเข้ามา save ก็ต้องเป็น utf-8 ด้วย

รายละเอียดมันยิบย่อย แต่ถ้าเข้าใจมัน เราจะไม่เจอปัญหานี้อีกเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-22 03:09:48 By : PlaKriM
 


 

No. 15



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



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


ตอบความคิดเห็นที่ : 10 เขียนโดย : natthanichaB เมื่อวันที่ 2017-10-20 12:02:00
รายละเอียดของการตอบ ::
ช่วยดูให้หน่อยได้มั้ยคะว่าต้องแก้ต้องไหนบ้าง เพราะตอนนี้ติดปัญหาเหมือนกัน
อันนี้เป็นcode insert SQL
Code (PHP)
 		$targetfolder = "upload/";
		$targetfolder = $targetfolder . basename( $_FILES['file']['name']) ;
		$ok=1;
		$file_type=$_FILES['file']['type'];
	echo $sql="insert into detail (topic,picture,datetime) 
			values ('$_POST[topic]','$filename','$time')";
			$query = odbc_exec($link,$sql);
	if ($file_type=="application/pdf" || $file_type=="image/gif" || $file_type=="image/jpeg") {
 		if(move_uploaded_file($_FILES['file']['tmp_name'], $targetfolder)){
			 $filename = $_FILES['file']['name'];
			 $time= date('Y-m-d H:i:s');
			echo $sql="insert into detail (topic,picture,datetime) 
			values ('$_POST[topic]','$filename','$time')";
			$query = odbc_exec($link,$sql);
			//exit;
				 ?>
            <script>
			//alert('hello');
            window.location.replace("http://192.168.0.120:8099/kulthorn/hp/filehr/management.php");
			//return false;
            
			</script>
        <?php
			}else {
				echo "Problem uploading file";
			}

	}else {
		//echo "You may only upload PDFs, JPEGs or GIF files.<br>";
	}
	$link->close;


ส่วนอีนนี้เป็นcode file connectค่ะ
Code (PHP)
<?php
$user = 'sa';
$pass = 'x5152535490';
$server = '192.168.0.120';
$database = 'hr_upload_file';

// No changes needed from now on
$connection_string = "DRIVER={SQL Server};SERVER=$server;DATABASE=$database;Client_CSet=UTF-8;Server_CSet=Windows-1251";
 
$link = odbc_connect($connection_string,$user,$pass);

if ($link) {
    //echo "Connection established.";
} else{
    die("Connection could not be established.");
}

?>



charset ใช้แบบนี้ค่ะ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
แก้หลายรอบละไม่ได้สักที
ถ้าไม่รบกวนขอดูโค๊ดได้ไหมจะได้นำไปประยุกต์

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-08-18 08:34:11 By : mewhappy
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : มีปัญหากับการแสดงข้อมูลภาษาไทยจาก Sql Server ใช้ php ค่ะ รบกวนขอคำแนะนำจากพี่ๆ ด้วยค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 01
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 อัตราราคา คลิกที่นี่