ผมมีปัญหาเรื่องการใช้งานภาษาไทยกับไฟล์ที่เข้ารหัสแบบ 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 ไม่แสดงผลอีก (แสดงผลไม่ได้ ภาษาไทยเป็นภาษาต่างดาวอ่านไม่ออกอีก) งงครับ
รบกวนด้วยน่ะครับ
-->
2.หน้า html ต้องใส่ meta เพื่อกำหนดให้เป็น UTF-8
3.หน้า php ต้องใส่ header เพื่อกำหนดให้เป็น UTF-8 (sign_up.php)
4.ใช้ POST แทน GET
ถ้าคุณอ่านบทความของที่นี่แล้วพยายามทำตามจนจบ ผมว่าคุณเป็น AJAX แน่นอน อ้อ อย่าลืมศึกษาเรื่องอื่นๆ ด้วย Ajax จะไม่มีความหมายถ้าใช้ Javascript ไม่เป็น
ตอนนี้ผมเพิ่งเริ่มหัดเขียน AJAX เหมือนกันกะว่าจะทำ CMS ของตัวเองสักตัว เลยต้องมาฝากเนื้อฝากตัวกับเว็บนี้แหละคับ
ลองหาหนังสืออ่านได้ที่นี่คับ
http://knowfree.net/2008/09/14/ajax-and-php-building-responsive-web-applications.kf
รับรองไม่ผิดหวัง ของดีที่เอามาแบ่งกันได้คับ