GORAGOD.com

freelance, web developer, web designer, hosting, domain name

ผมมีปัญหาเรื่องการใช้งานภาษาไทยกับไฟล์ที่เข้ารหัสแบบ utf-8 น่ะคร

<!--
ผมมีปัญหาเรื่องการใช้งานภาษาไทยกับไฟล์ที่เข้ารหัสแบบ utf-8 น่ะครับ
คำถามของผมมีอยู่ว่า

1. สร้างฐานข้อมูลชื่อว่า farook เข้ารหัสเป็น utf8_unicode_ci มีตารางชื่อว่า member ในตารางมีอยู่ 3 ฟิลด์ ได้แก่
login varchar 45,pass varchar 45, name varchar 45
2. สร้างไฟล์ชื่อว่า index.php ที่มีฟอร์มสำหรับกรอกข้อมูล โดยเข้ารหัสไฟล์เป็น utf-8 (ใช้ EditPlus 3 สร้าง)
โดยเนื้อหาของไฟล์มีดังนี้ครับ
-->
<html><!--จริงๆแล้วผมก็ประกาศ DOCTYPE เหมือนชาวบ้านเค้านั่นแหละครับแต่ว่าตรงนี้ผมขอละไว้ในฐานที่เข้าใจน่ะครับ-->
<head>
<title>ทดสอบการส่งค่าจากฟอร์มโดยเข้ารหัสไฟล์แบบ utf-8</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
 function createxmlHttp(){
 /*ผมมั่วๆเอาน่ะครับไม่รู้ว่าคนอื่นเค้าเขียนโค้ดกันอย่างนี้หรือเปล่า*/
 var obj=false;
  if(window.XMLHttpRequest){
  obj=new XMLHttpRequest();
  }else if(window.ActiveXObject){
  obj=new ActiveXObject("Microsoft.XMLHTTP");
  }else{
  alert("บราวเซอร์ของคุณไม่สามารถใช้งานอาแจคได้ครับ"); return false;
  }
  return obj;
 }
 
 /*เมื่อฟอร์มถูกเรียกก็จะเรียกใช้ฟังชั่นนี้*/
 function send_data(){
 var req=createxmlHttp();
 /*ประกาศค่าตัวแปรที่รับมาจากฟอร์ม*/
 var user=document.getElementById("user").value;
 var pass=document.getElementById("pass").value;
 var login=document.getElementById("login").value;
 
 /*ผมเห็นบางคนเค้าก้เขียนอย่างนี้น่ะครับ
 var user=document.myform.user.value;
 var pass=document.myform.pass.value;
 var login=document.myform.login.value;
 */

  
 if(user=="" || pass=="" || login==""){
  alert("ยังไม่กรอกข้อมูลเลยครับ"); return;

 }

  var str=Math.random();/*สร้างตัวแปรแบบสุ่มเพื่อให้เบราเซอร์ไม่เก็บค่า*/
  var qstr="";
  qstr+="sign_up.php?time="+str;
  qstr+="&user="+user;
  qstr+="&pass="+pass;
  qstr+="&login="+login;

 req.onreadystatechange=function(){
  var x=document.getElementById("result");/*สร้างพื้นที่ไว้เพื่อการแสดงผลที่หน้าจอ*/
   if(req.readyState==4 && req.status==200){
   x.innerHTML=req.responseText;
   clearbox();
   }else{
   x.innerHTML="Please Wait..<img src='aero_dark.gif' />";
   clearbox();
   }
  }
 req.open("GET",qstr,true);
 req.send(null);
 }

 function clearbox(){
 document.getElementById("user").value="";
 document.getElementById("pass").value="";
 document.getElementById("login").value="";
 

 }
</script>
</head>
<body>
<h1 align="center">ทดสอบการส่งค่าจากฟอร์มโดยเข้ารหัสไฟล์แบบ utf-8</h1>
<form name="myform">
User::<input type="text" name="user" id="user"><br />
Pass::<input type="text" name="pass" id="pass"><br />
Login::<input type="text" name="login" id="login"><br />
<input type="button" value="ส่งค่าจากฟอร์ม" onclick="send_data(); return false;">
</form>
<p>
<div id="result">ข้อความจะมาปรากฎที่นี่ครับ</div>
</body>
</html>

 

<!--
3. สร้างไฟล์ชื่อว่า sign_up.php เข้ารหัสเป็น utf-8 เพื่อใช้รับการ Submit ข้อมูลที่ส่งค่าแบบ GET
จากฟอร์ม ซึ่งมีเนื้อหาดังนี้ครับ

<?
 
 sleep(2);
 /*สั่งให้หยุด 2 วินาที(หรือเปล่า)เพื่อให้เห็นรูปตอนรอครับ*/


 $user=$_GET["user"];
 $pass=$_GET["pass"];
 $login=$_GET["login"];

 echo"สวัสดีครับคุณ".$user."<br />";
 echo"รหัสผ่านของคุณคือ".$pass."ชื่อของคุณก็คือ".$login."<br />";


/*ผมได้ใช้ทดสอบกับ ไออี 7 ทุกอย่างทำงานได้ดีครับแต่ว่าภาษาไทยเป็นรูปสี่เหลี่ยม อ่านไม่ออก แต่ว่าไม่มีปัญหากับ FireFox ครับ ทดลองเขียนโค้ดเพิ่มข้อมูลในฐานข้อมูลที่ชื่อว่า farook ซึ่งเข้ารหัสเป็น utf8_unicode_ci
ซึ่งโปรแกรมเซอร์เวอร์ที่ผมใช้ทดสอบเป็น Appserve version 'appserv-win32-2.5.9.exe'
ผมสามารถบันทึกข้อมูลได้อย่างถูกต้องในฐานข้อมูลเมื่อใช้ไฟร์ฟ๊อก แต่ว่าพอมาใช้ ไออี 7 กลับไม่มีอะไรถูกบันทึกเข้าฐานข้อมูลเลยครับ

โค้ดเพิ่มเติมดังนี้ครับ */
 
 $dbname="farook";
 $tbname="member";
 $dbuser="root";
 $dbpass="1234";
 $hostname="localhost";

 $link=mysql_connect($hostname,$dbuser,$dbpass);
 mysql_select_db($dbname,$link);
 mysql_query("set names utf8");

 $cmd="insert into $tbname(login,pass,name)values('$login','$pass','$user')";
 mysql_query($cmd,$link);
 if(!$cmd){
 echo"Cannot Insert Data!! <br />";
 }else{
 echo"Data Insert Successfully!!<br />";
 }

 mysql_close($link);


?>

ผมไม่ทราบว่ามีคนตั้งคำถามมาแบบนี้บ้างหรือยัง ผมควรจะแก้ไขปัญหานี้ได้อย่างไรครับ
แล้วไม่ทราบว่าถ้าจะเขียน อาแจ๊คให้ถูกต้องผมจะหาเรียนได้จากที่ไหนบ้างครับ แบบว่าอยากเรียนมากครับ
เห็นว่าอาแจ๊คมันน่าสนใจดี แต่ว่าปัญหาเยอะมากเลยครับ
เพราะว่าผมยังไม่ค่อยเข้าใจแม้ว่าจะซื้อหนังสือมาอ่านจนเกือบหมดร้านแล้วก็ยังเจอปัญหาอยู่ดี
ตอนนี้ผมมีหนังสือเกี่ยวกับ PHP CSS HTML AJAX เกือบทุกเล่มที่เค้าวางขายกันในร้านหนังสือแล้วน่ะครับ
แต่ว่าผมยังไปไม่ถึงไหนเลยครับ ผมเรียนมาตั้งเกือบ 4 เดือนแล้ว ผมขอความกรุณาด้วยน่ะครับ
ภาษา PHP CSS XHTML HTML Mysql ผมก็ยังไม่คล่องเลย อยากจะขอความกรุณาด้วยน่ะครับ
ขอขอบคุณอย่างยิ่งครับสำหรับคำตอบครับ

ปล. ส่วนที่ผมคอมเม้นไว้นี้เพราะว่าผมเอาโค้ดนี้รับในเครื่องผมแล้วน่ะครับ แล้วก็ทุกอย่างก็ผ่านด้วยดีครับ
ติดปัญหาที่ภาษาไทยอย่างเดียวครับ ไออี ใช้งานไม่ได้ หากว่าเข้ารหัสไฟล์เป็น ANSI
แล้วกำหนด META เป็น windows-874 ก็ใช้ได้ไม่มีปัญหาในไออี แต่จะมีปัญหากับ FireFox 3
อีกน่ะครับ คือ FireFox 3 ไม่แสดงผลอีก (แสดงผลไม่ได้ ภาษาไทยเป็นภาษาต่างดาวอ่านไม่ออกอีก) งงครับ
รบกวนด้วยน่ะครับ
-->

22 พ.ย. 2551 4 8,023

1.ทุกอย่างต้องเป็น UTF-8 ตั้งแต่หน้าเพจ + db
2.หน้า html ต้องใส่ meta เพื่อกำหนดให้เป็น UTF-8
3.หน้า php ต้องใส่ header เพื่อกำหนดให้เป็น UTF-8 (sign_up.php)
4.ใช้ POST แทน GET

ถ้าคุณอ่านบทความของที่นี่แล้วพยายามทำตามจนจบ ผมว่าคุณเป็น AJAX แน่นอน อ้อ อย่าลืมศึกษาเรื่องอื่นๆ ด้วย Ajax จะไม่มีความหมายถ้าใช้ Javascript ไม่เป็น
#1

ต้องหาตำราที่เป็น text อ่านเก่งแน่คับ บางทีคนแปลชอบแปลผิด คนอ่านก็งงจนแก้ไม่ถูก
ตอนนี้ผมเพิ่งเริ่มหัดเขียน AJAX เหมือนกันกะว่าจะทำ CMS ของตัวเองสักตัว เลยต้องมาฝากเนื้อฝากตัวกับเว็บนี้แหละคับ
ลองหาหนังสืออ่านได้ที่นี่คับ

http://knowfree.net/2008/09/14/ajax-and-php-building-responsive-web-applications.kf

รับรองไม่ผิดหวัง ของดีที่เอามาแบ่งกันได้คับ
#2

ผมว่าไม่ต้อง text หรอกครับ บนเว็ปนี้ก็พอครับ ผมก้เป็นกับ web นี้ครับ
#3

ผมเคยเจอเหมือนกัน ผมใช้ iconv ในการแปลง
#4
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^