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 > PHP+Postgres ขึ้น ERROR: invalid byte sequence for encoding "UTF8" ครับ



 

PHP+Postgres ขึ้น ERROR: invalid byte sequence for encoding "UTF8" ครับ

 



Topic : 107647



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



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



พอดีงานที่กำลังทำอยู่ เป็นงานที่ดึงข้อมูลงานบุคคลจากฐานข้อมูลของโปรแกรมที่เขาใช้คีย์ข้อมูลพนักงานครับ
ฐานข้อมูล PostgresSQL 8.1
โดยตัวฐานข้อมูลใช้ Encoding เป็น WIN874 ครับ

ซึ่งผมก็ดึงข้อมูลขึ้นมาแสดงผล โดยแปลงข้อมูลที่ออกมาเป็น UTF-8 แล้วออกมาแสดง
จากขั้นตอนนี้ใช้งานได้ปกติครับ

ปัญหามาเกิดตอนที่ทำช่อง Input box สำหรับค้นหาชื่อพนักงาน
มาพบว่า เวลาที่ชื่อที่ค้นหามีตัว "ภ" สำเภาแล้วจะขึ้นเออเรอ์ประมาณนี้ทุกครั้งครับ

Warning: pg_query() [function.pg-query]: Query failed: ERROR: invalid byte sequence for encoding "UTF8": 0xe0b825


ลองหาข้อมูลจากหลายๆ ที่แล้ว แต่ก็ยังไม่สำเร็จครับ
ก็เลยอยากขอความช่วยเหลือท่านผู้รู้ทั้งหลายครับ แก้จนหมดหนทางแล้วครับ
(ใจจริงถ้าแก้ฐานให้เป็น UTF-8 เลยคงง่ายกว่านี้ แต่พอดีไม่กล้าไปแก้ครับ กลัวโปรแกรมของเขาจะใช้งานไม่ได้แล้วจะโวยเอา เหอะๆ)

ขอความกรุณาด้วยนะครับ ^ ^



Tag : PHP, PostgreSQL, Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-04-13 19:54:21 By : BossR View : 2138 Reply : 4
 

 

No. 1



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



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

ตอนนี้ได้ความเพิ่มเติมครับ

หลังจากลองเขียนโค้ดใหม่โดยไม่ใช้วิธีเรียกแบบ AJAX ผลคือสามารถใช้ "ภ" ได้แล้ว

แสดงว่าตอนที่ผมส่งค่าผ่านฟังก์ชัน AJAX ของ javascript คงมีอะไรซักอย่างที่ทำงานผิดครับ

เดี๋ยวต้องลองดูอีกที






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-13 21:13:51 By : BossR
 


 

No. 2

Guest


ขอโค้ด AJAX ที่มีปัญหามาวางหน่อยครับ อาจช่วยอะไรได้บ้างครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-13 21:29:44 By : Hello
 

 

No. 3



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



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

อันนี้ครับ เป็นอันที่ผมไปก๊อปมาจากของพี่เขาน่ะครับ

Code (JavaScript)
<script src="./includes/Ajax_Framework1.js"></script>
<script language="javascript">
<!--
function ajaxshow(p){	
	//var data = getFormData("frmpsm");
	
	var data = "pers="+document.getElementById("pers").value
		+"&persTitle="+document.getElementById("persTitle").value
		+"&persSearch="+document.getElementById("persSearch").value;
	
	
	if(!p){p = 1;}
	
	var url = "frmpersonal_data.php?page=" + p + "&sid=" + Math.random();
	ajaxLoad("post", url, data, "displayId");
	//document.getElementById("person_username").focus();
}


Ajax_Framework1
Code (JavaScript)
function ajaxLoad(method, URL, data, displayId){
	var ajax = null;
	try{
		// Firefox, Opera 8.0+, Safari, Chrome
		ajax = new XMLHttpRequest();
	}catch(e){
		// Internet Explorer
		try{
			ajax = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				ajax = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
				alert("Your Browser Don't Support AJAX!");
				return false;
			}
		}
	}

	method = method.toLowerCase();
	URL += "?dummy=" + (new Date()).getTime();
	if(method=="get"){
		URL += "&" + data;
		data = null;
	}

	ajax.open(method, URL);

	if(method=="post"){
		ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	}
	
	ajax.onreadystatechange = function(){//RequestState
		if(ajax.readyState==4 && ajax.status==200){	
			var ctype = ajax.getResponseHeader("Content-Type").toLowerCase();
			ajaxCallback(ctype, displayId, ajax.responseText);
			delete ajax;
			ajax = null;
			setTimeout("doStart()", 1000);	
		}else{
			document.getElementById("displayId").innerHTML = "<div id='loadingShow'><br><br><font face='Tahoma' size='2'><img src='./images/loading1.gif' border='0'><br><br><br>ขณะนี้กำลัง Loading...&nbsp;&nbsp;กรุณารอสักครู่<br></font></div>";
		}
	}
	ajax.send(data);
}

function ajaxCallback(contentType, displayId, responseText){
	if(contentType.match("text/javascript")){
		eval(responseText);
	}
	else {
		var el = document.getElementById(displayId);
		el.innerHTML = responseText;
	}
}

function getFormData(form_name_or_id){	
	var frm = document.forms[form_name_or_id];
	if(frm==null){
		alert("form not found!");
		return;
	}

	var data = "";
	var num_el = frm.elements.length;
	for(i=0; i<num_el; i++){
		var el = frm.elements[i];
		if(el.name=="" && el.id==""){
			continue;
		}
		var param_name = "";
		if(el.name!=""){
			param_name = el.name;
		}
		else if(el.id!=""){
			param_name = el.id;
		}

		var t = frm.elements[i].type;
		var value = "";
		if(t=="text"||t=="password"||t=="hidden"||t=="textarea"){
			value = encodeURI(el.value);
		}
		else if(t=="radio"||t=="checkbox"){
			if(el.checked){
				value = encodeURI(el.value);
			}
			else{
				continue;
			}
		}
		else if(t=="select-one"){
			value = encodeURI(el.options[el.selectedIndex].value);
		}
		else if(t=="select-multiple"){
			for(j=0; j<el.length; j++){
				if(el.options[j].selected){
					if(data!=""){
						data += "&";
					}
					data += param_name + "=";
					data += encodeURI(select.options[j].value);
				}
			}
			
			continue;
		}
		if(data!=""){
			data += "&";
		}
		data += param_name + "=" + value;
	}

	return data;
}





*เพิ่มเติมครับ ผมลองสั่ง echo sql คำสั่งที่ผมใช้แล้ว
ถ้าเป็นข้อความอื่นจะขึ้นปกติ แต่พอเป็นตัว ภ ชอบขึ้น � เสมอเลยล่ะครับ


ประวัติการแก้ไข
2014-04-14 12:37:20
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-14 12:33:27 By : BossR
 


 

No. 4



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



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

หลังจากได้ไปเล่นน้ำมาหลายวัน ปัญหาก็สามารถแก้ไขลงได้ซักทีครับ

พอลองทดลองโค้ดไปเรื่อยๆ ปัญหาดันไม่ได้เป็นที่ Javascript หรือ jquery เลย
แต่เกิดจากโค้ด PHP ผมตัวนึงครับ สำหรับแยกข้อความชื่อพนักงานเพื่อเอาไปสร้าง SQL สำหรับค้นหา

Code (PHP)
$explode_name = preg_split('/\s+/', $searchtxt);


เหมือนกับว่า คำสั่ง preg_split จะใช้คู่กับ unicode ได้ต้องมีการเพิ่ม u modifier เข้าไปครับ ถึงจะใช้ได้
หรือจะใช้ \p{Z} แทนก็ได้
$explode_name = preg_split('/\s+/u', $searchtxt);
//หรือ
$explode_name = preg_split('/\p{Z}+/', $searchtxt);


หรือจะใช้ explode ก็ได้ผลลัพธืเหมือนกัน
$explode_name = explode(' ', $searchtxt);



แหล่งที่มาของคำตอบนี้ครับ
http://stackoverflow.com/questions/4231864/why-does-phps-preg-split-split-the-hebrew-letter-in-utf-8-when-splitting-on
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-04-17 14:40:57 By : BossR
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : PHP+Postgres ขึ้น ERROR: invalid byte sequence for encoding "UTF8" ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 อัตราราคา คลิกที่นี่