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

Registered : 108,419

HOME > PHP > PHP Forum > การแสดงผล เออเรอร์ Window-874 UTF-8 มันมีปัญหาใช้งานได้อย่างเสียอย่าง



 

การแสดงผล เออเรอร์ Window-874 UTF-8 มันมีปัญหาใช้งานได้อย่างเสียอย่าง

 



Topic : 107802



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



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




พอดีผมเขียนเวบให้มันดึงดาต้าจาก MSSQL มาเก็บไว้ใน javascript ประมาณนี้
Code (PHP)
$(function() {
var projects = [
		<?
		$servername = 'xxxxxxxxxxxxxxx'; 
		$databasename = 'xxxxxxxxxxx'; 
		$user = 'sa';
		$pass = 'xxxxxxxxxxx'; 
		$connection_string = "DRIVER={SQL Server};SERVER=$servername;DATABASE=$databasename;AutoTranslate=no;";
		$objConnect= odbc_connect($connection_string  ,$user, $pass);
		$strSQL = "SELECT [EMP_ID],[EN],[NAME_EN],[SURNAME_EN],[NAME_TH],[SURNAME_TH],[SECTION],[POSITION],[JOIN_DATE] FROM [train].[dbo].[EMP]";
		$objExec = odbc_exec($objConnect,$strSQL) or die ("Error Execute [".$strSQL."]");
 while($objResult = odbc_fetch_array($objExec)) 
	{ ?>
 		{
		value: "<?=$objResult['EMP_ID'];?>",
		label: "<?=$objResult['EN'];?> <?=$objResult['NAME_EN'];?>",
		desc: "<?=$objResult['NAME_TH'];?> <?=$objResult['SURNAME_TH'];?> <?=$objResult['SECTION'];?> <?=$objResult['POSITION'];?>",
		icon: ""
		},
<?  } ?>			
		{
		value: "---",
		label: "---",
		desc: "---",
		icon: "jqueryui_32x32.png"
		}
];


แล้วก็มีบางส่วยของหน้าเวบที่ใช้ jQuery Function เช่น
Code (JavaScript)
<script >
$(document).ready(function () {
  //called when key is pressed in textbox
	   $("#SCORE").keypress(function (e) {
	     //if the letter is not digit then display error and don't type anything
		     if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
		        //display error message
		        $("#errscore").html("ตัวเลขเท่านั้น").show().fadeOut("slow");
		               return false;
		    }
	   });
});
</script>


กับอันนี้
Code (JavaScript)
 <script >
$(function() {
$( document ).tooltip();
});
</script>

อันท้ายนี้มันแสดงผลที่ช่องTextboxทั่วไปที่มี Title
<input type="" id="DEFECT_REJECT" title="กรุณากรอกตัวเลขเท่านั้น">
ส่วนรูปแบบของทูลทิปนี้ก็มีแค่นี้
Code (PHP)
<style>
label {
display: inline-block;
width: 2em;
}
 .ui-tooltip {
padding: 10px 20px;
color: red;
border-radius: 10px;
font: bold 14px "Ms trabuchet", Sans-Serif;
text-transform: uppercase;
box-shadow: 0 0 7px black;
}
</style>


ไม่แน่ใจว่าปัญหาจะเป็นตรงอันแรก คือค่าที่เอาไปเก็บในตัวแปลจาวาหรือปล่าว
ถ้าเราตั้งให้เวบแสดงผลเป็นUTF-8 ชื่อพนักงาน NAME_TH SURNAME_TH มันจะเป็นสี่เหลี่ยมข้าวหลามตัดหมดเลย ในทางกลับกันถ้าเปลี่ยนเป็น Window-874 ไอ้ส่วนภาษาไทย ที่เหลือ ใน ทูลทิป ใน errmsg ต่างๆมันก็เป็นแทน โดยที่ช่อง NAME_TH SURNAME_TH กลับมาแสดงผลถูกต้องปรกติ



Tag : PHP, Ms SQL Server 2008, jQuery







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-04-22 13:41:25 By : anue0159 View : 1600 Reply : 16
 

 

No. 1

Guest


ปัญหาคือพอ set เป็น utf-8 แล้วภาษาไทยที่ hard code ลงไปทำแสดงผลผิดว่างั้น

ดังนั้นใน page ตั้งเป็น utf-8 น่ะถูกแล้ว

ปัญหานี้น่าจะเกิดจากตัว editor ไม่ได้ encoding เป็น utf-8 ให้ไปที่ option ของ editor

แล้วมันให้มัน save file ด้วย utf-8 ก็น่าจะได้แล้ว

ปล. ถ้าไม่รู้จะไปตั้งต้องไหน ทำเอาไฟล์นี้มาเปิดด้วย notepad แล้ว save as เลือก encoding เป็น utf-8 ดูก่อนก็ได้






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-22 14:13:38 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2014-04-22 14:13:38
รายละเอียดของการตอบ ::
Code (PHP)
$(function() {
var projects = [
		<?
		$servername = 'xxxxxxxxxxxxxxx'; 
		$databasename = 'xxxxxxxxxxx'; 
		$user = 'sa';
		$pass = 'xxxxxxxxxxx'; 
		$connection_string = "DRIVER={SQL Server};SERVER=$servername;DATABASE=$databasename;AutoTranslate=no;";
		$objConnect= odbc_connect($connection_string  ,$user, $pass);
		$strSQL = "SELECT [EMP_ID],[EN],[NAME_EN],[SURNAME_EN],[NAME_TH],[SURNAME_TH],[SECTION],[POSITION],[JOIN_DATE] FROM [train].[dbo].[EMP]";
		$objExec = odbc_exec($objConnect,$strSQL) or die ("Error Execute [".$strSQL."]");
 while($objResult = odbc_fetch_array($objExec)) 
	{ ?>
 		{
		value: "<?=$objResult['EMP_ID'];?>",
		label: "<?=$objResult['EN'];?> <?=$objResult['NAME_EN'];?>",
		desc: "<?=$objResult['NAME_TH'];?> <?=$objResult['SURNAME_TH'];?> <?=$objResult['SECTION'];?> <?=$objResult['POSITION'];?>",
		icon: ""
		},
<?  } ?>			
		{
		value: "---",
		label: "---",
		desc: "---",
		icon: "jqueryui_32x32.png"
		}
];



ไม่น่าจะใช่อ่ะครับ ถ้าผมใช้ UTF-8 มันก็จะแสดงผลตรงนี้ไม่ถูกอย่างเดียวครับ ตรงอื่นจะถูกหมด มันอาจเป็นเพราะว่าผมเอาไปใส่ในตัวแปล จาวา หรือเปล่าเลยเป็นแบบนีั้
แบบที่คุณให้ลองก็ไม่ได้ครับ ลองแล้ว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-22 14:43:09 By : anue0159
 

 

No. 3



โพสกระทู้ ( 3,971 )
บทความ ( 7 )

Hall of Fame 2012

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


ตอบความคิดเห็นที่ : 2 เขียนโดย : anue0159 เมื่อวันที่ 2014-04-22 14:43:09
รายละเอียดของการตอบ ::
1. รูปแบบการเขียน ajax&jquery แนะนำให้ใช้รูปแบบ json จะดีกว่าครับ เพื่อความถูกต้องและทำงานเป็นระบบ
2. set name เป็น utf8
Code (PHP)
odbc_exec($conn, "SET NAMES 'UTF8'");
odbc_exec($conn, "SET client_encoding='UTF-8'");


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-22 15:03:50 By : Ex-[S]i[L]e[N]t
 


 

No. 4



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



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

ลองเข้าหน้านั้นแล้ว view source ดูครับว่าใน JS ส่วนแรกที่คุณพูดถึงเป็นภาษาต่างดาวมั้ย ถ้าใช่ ก็ตั้งให้ fetch ค่าออกมาเป็น UTF-8 ก็จบ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-22 15:11:00 By : itpcc
 


 

No. 5



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



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


ตอบความคิดเห็นที่ : 3 เขียนโดย : Ex-[S]i[L]e[N]t เมื่อวันที่ 2014-04-22 15:03:50
รายละเอียดของการตอบ ::
ผมใช้ json ไม่เป็นอ่ะครับ ไม่เข้าใจเลยว่ามันคืออะไร รู้แต่ว่ามันดึงดาต้าๆ แต่ไม่เข้าใจเลยว่ามันคืออ่ะไร
เดี๋ยวผมลองดูนะครับ ว่าจะได้แบบที่แนะนำมาไหม

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-22 15:31:03 By : anue0159
 


 

No. 6



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



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


ตอบความคิดเห็นที่ : 5 เขียนโดย : anue0159 เมื่อวันที่ 2014-04-22 15:31:03
รายละเอียดของการตอบ ::
ลองแล้วเออเรอร์ครับ ผมใส่ odbc_exec($conn, "SET NAMES 'UTF8'"); ไปก่อนบรรทัดนี้

$objExec = odbc_exec($objConnect,$strSQL) or die ("Error Execute [".$strSQL."]");

เออเรอร์แบบนี้อ่ะครับ

odbc_exec(): SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]'NAMES' is not a recognized SET option., SQL state 37000 in SQLExecDirect in C:\xampp\htdocs

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-22 15:48:59 By : anue0159
 


 

No. 7



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



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


ตอบความคิดเห็นที่ : 4 เขียนโดย : itpcc เมื่อวันที่ 2014-04-22 15:11:00
รายละเอียดของการตอบ ::
ใช่ครับ ตรงที่บอกว่าดึงมาจาก MSSQL อยู่ใน JS (โค้ดส่วนแรกอ่ะครับ) มันเป็นที่เดียว
ไม่เข้าใจอ่ะครับ ให้ทำส่วนของ SQL script หรือครับ ผมลองเพิ่ม charset=UTF-8 ต่อท้ายconnectiong stringแล้วก็ยังไม่ได้
Code (PHP)
$connection_string = "DRIVER={SQL Server};SERVER=$servername;DATABASE=$databasename;AutoTranslate=no;charset=UTF-8";  //???????????? connection string ????? connect ODBC
$objConnect= odbc_connect($connection_string  ,$user, $pass);//odbc_exec($objConnect, "SET NAMES 'UTF8'");
odbc_exec($objConnect, "SET client_encoding=UTF-8");
$strSQL = "SELECT [EMP_ID],[EN],[NAME_EN],[SURNAME_EN],[NAME_TH],[SURNAME_TH],[SECTION],[POSITION],[JOIN_DATE] FROM [train].[dbo].[EMP]";
$objExec = odbc_exec($objConnect,$strSQL) or die ("Error Execute [".$strSQL."]");




ประวัติการแก้ไข
2014-04-22 15:58:18
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-22 15:56:37 By : anue0159
 


 

No. 8



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



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


วิวซอร์ส ได้แบบนี้
่วิวซอร์ส2


ประวัติการแก้ไข
2014-04-22 16:34:49
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-22 16:30:08 By : anue0159
 


 

No. 9



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



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

ตอบความคิดเห็นที่ : 7 เขียนโดย : anue0159 เมื่อวันที่ 2014-04-22 15:56:37
รายละเอียดของการตอบ ::
งั้นก็คงต้องใช้ท่าไม้ตาย iconv แปลงแล้วล่ะครับ หาใน thaicreate ดูครับ มีคนถามเพียบ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-22 18:37:51 By : itpcc
 


 

No. 10



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



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


ตอบความคิดเห็นที่ : 9 เขียนโดย : itpcc เมื่อวันที่ 2014-04-22 18:37:51
รายละเอียดของการตอบ ::
โหยยยยย ขอบคุณมากเลยครับ
สุดยอดๆ วันนึงเต็มๆเลยนะเนี่ยผม...ฮ่าๆๆ

รบกวนถามเพิ่ม ถ้าเป็นแบบนี้ผมก็ต้องใช้ iconv แปลง เวลาแอดดาต้าเข้าดาต้าเบสด้วยใช่ไหมครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-23 07:51:52 By : anue0159
 


 

No. 11



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



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

ตอบความคิดเห็นที่ : 10 เขียนโดย : anue0159 เมื่อวันที่ 2014-04-23 07:51:52
รายละเอียดของการตอบ ::
ไม่ต้องครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-23 08:19:42 By : itpcc
 


 

No. 12



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

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

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

จริงๆ ถ้าใน MSSQL Server เราตั้งเป็น Thai_CI_AS หรือ Thai_CI_AI เท่ากับว่ามันคือ Charset TIS-620 หรือ WIndows 874 ดังนั้นถ้าหน้าเว็บเราใช้ charset="UTF-8" ตอนเพิ่มหรือ แก้ไขข้อมูล ใน MSSQL Server จะเป็น ?????? ครับ ทางที่ดีคือ เราควรจะแปลงทั้ง ตอนเอาเข้า และ ตอนแสดงผล

ตอนเอาเข้า

Code (PHP)
$txt = iconv("utf-8","tis-620","ทดสอบ");
insert into tb_name (f1) values ('$txt')


ตอนแสดงผล

Code (PHP)
$txt = iconv("tis-620","utf-8",$fetch['f1']);



ประวัติการแก้ไข
2014-04-23 08:56:57
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-23 08:56:06 By : Manussawin
 


 

No. 13

Guest


เอ๋....
เดี๋ยวผมลองก่อนๆ ขอบคุณมากครับ ทุกคน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-23 09:25:40 By : anue0159
 


 

No. 14



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



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


ผมติดตรง insert ตอนนี้ครับ ส่วนฐานข้อมูลใช้ charset window-874 ได้ใช้ iconv แปลงแล้วก็ยังไม่ได้ ติดตรง insert ข้อมูลอย่างเดียวตอนนี้ครับ พอมีทางแก้ไขไหมครับ


ประวัติการแก้ไข
2020-08-25 08:51:31
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-08-25 08:41:33 By : elliasjb
 


 

No. 15



โพสกระทู้ ( 3,912 )
บทความ ( 8 )



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


ตอบความคิดเห็นที่ : 14 เขียนโดย : elliasjb เมื่อวันที่ 2020-08-25 08:41:33
รายละเอียดของการตอบ ::
ข้างบนมีคนตอบไว้หมดแล้ว ได้ลองทำหรือยัง?

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-08-25 09:04:37 By : mr.v
 


 

No. 16



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



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


ถ้าข้อมูลยังไม่เยอะ แนะนำให้ convert ตระกูล text ให้ป็น NText Nvarchar ใช้งาน ในรูปแบบ utf-8

แบบไม่ต้องสนใจ charset ของ MSSQL (ข้อเสียมันใช้พื้นที่มากกว่า)

เวลา เอาเข้า database Set fieldname = N'ทดสอบภาษาไทย'
เวลาดึงข้อมูลปกติ

ไม่ใช่ไม่อยากใช้ ของไทยทำ แต่เมื่อมัน ยังไม่ดีพอ ก็ควรเลือกใช้สิ่งที่ดีกว่า
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-08-25 09:13:59 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : การแสดงผล เออเรอร์ Window-874 UTF-8 มันมีปัญหาใช้งานได้อย่างเสียอย่าง
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม , รับทำบัญชี , โรงงานผลิตครีม , สำนักงานบัญชี , รับจดทะเบียนบริษัท , Pangpond , รถมือสอง

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