การแสดงอักขระพิเศษ (พิมพ์ผ่านคีย์บอร์ดด้วยปุ่ม Alt+ตัวเลข) บนเวปทำอย่างไงครับ

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

BasicNeeds

การแสดงอักขระพิเศษ (พิมพ์ผ่านคีย์บอร์ดด้วยปุ่ม Alt+ตัวเลข) บนเวปทำอย่างไงครับ

Post by BasicNeeds » 18/06/2011 5:58 am

ผมมีข้อมูลเป็นชื่อต่าง ๆ ที่ผู้ใช้สร้างขึ้นเก็บไว้ใน mysql เก็บไว้แบบ tis620 ซึ่งเวลาดูจะเห็นอักขระที่ผู้ใช้พิมพ์ด้วย Alt+ตัวเลขต่าง ๆ ไม่ได้ หรือไม่ถูกต้อง (เช่น เว้นวรรคบางคนไม่ใช้ spacebar แต่จะใช้ Alt+160 แทน)

พอเราจะให้มันแสดงผลผ่านหน้าเวปด้วย php+html มันก็จะทำให้ browser แสดงผลอักขระนี้ไม่ถูกต้อง เช่นเป็นช่องสีเหลี่ยงใน IE เป็นต้น

ขอคำแนะนำหน่อยครับ ว่าจะทำอย่างไงให้อักขระพวกนี้แสดงผลได้ถูกต้องตรงกับที่เขาพิมพ์มา

ขอบคุณครับ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 23244
Joined: 22/09/2008 6:18 pm
Contact:

Re: การแสดงอักขระพิเศษ (พิมพ์ผ่านคีย์บอร์ดด้วยปุ่ม Alt+ตัวเลข) บนเวปทำอย่างไงครับ

Post by mindphp » 18/06/2011 12:30 pm

ขอดูตัวอย่างข้อมูลจริงๆ หน่อยครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

BasicNeeds

Re: การแสดงอักขระพิเศษ (พิมพ์ผ่านคีย์บอร์ดด้วยปุ่ม Alt+ตัวเลข) บนเวปทำอย่างไงครับ

Post by BasicNeeds » 18/06/2011 7:13 pm

Image

ดูชื่อบรรทัดที่ 3 จริง ๆ ต้องชื่อ • อั ง รี ดู นั ง ต์ • (ตรงเว้นวรรคระหว่างตัวอักษรเขาใช้ Alt+160 ครับ แต่พอผ่าน code ด้านล่างแสดงบนเวป มันเป็นสีเหลี่ยมใน IE เป็นเครื่องหมายอื่นใน Firefox)

ด้านบนคือภาพจาก code ล่างนี้ครับ

Code: Select all

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=tis-620" />
</head>

<body>

<?php

$hostdb = "***";
$userdb = "***";
$passdb = "***";
$db_game = "***";

mysql_connect($hostdb, $userdb, $passdb) or die("ติดต่อฐานข้อมูลไม่ได้");
mysql_select_db($db_game) or die("เลือกฐานข้อมูลไม่ได้");

mysql_query("SET NAMES TIS620");
//mysql_query("SET character_set_results=utf8");
//mysql_query("SET character_set_client=utf8");
//mysql_query("SET character_set_connection=utf8");

$SQL = mysql_query("
SELECT
sql_rank.pvp,
`char`.name
FROM
sql_rank
Inner Join `char`
ON (sql_rank.char_id=char.char_id)
ORDER BY
sql_rank.pvp DESC
LIMIT 3
");

	while( $fetch = mysql_fetch_array( $SQL )){
		$name = $fetch [name];
		$pvp_point = $fetch [pvp];
		echo htmlspecialchars($name,ENT_COMPAT,TIS-620)." $name [คะแนน: $pvp_point]<br />\n";
	}
	
echo "รหัส 65 ใช้ฟังก์ชั่น Chr(65) :".chr(65).":<br>";
echo "รหัส 161 ใช้ฟังก์ชั่น Chr(161) :".chr(161).":<br>";
echo "รหัส 160 ใช้ฟังก์ชั่น Chr(160) :".chr(149).":<br><hr>";
echo "อักษร A ใช้ฟังก์ชั่น Ord(A) :".ord(A)."<br>";
echo "อักษร ก ใช้ฟังก์ชั่น Ord(ก) :".ord(ก)."<br><hr>";

$string = "bamboolabcode";
$arr = str_split ( $string, 1 );
$run = str_split ( $name, 1 );
print_r ( $arr );
print_r ( $run );
echo ord($run[2]);
	
?>

</body>

</html>
code ด้านบนผมใส่อย่างอื่นเพิ่มไปเพื่อทดสอบอย่างอื่นเพิ่มไปด้วยนะครับ ตัวที่แสดงผลออกมาคือ แค่ตรงนี้

Code: Select all

$hostdb = "***";
$userdb = "***";
$passdb = "***";
$db_game = "***";

mysql_connect($hostdb, $userdb, $passdb) or die("ติดต่อฐานข้อมูลไม่ได้");
mysql_select_db($db_game) or die("เลือกฐานข้อมูลไม่ได้");

mysql_query("SET NAMES TIS620");
//mysql_query("SET character_set_results=utf8");
//mysql_query("SET character_set_client=utf8");
//mysql_query("SET character_set_connection=utf8");

$SQL = mysql_query("
SELECT
sql_rank.pvp,
`char`.name
FROM
sql_rank
Inner Join `char`
ON (sql_rank.char_id=char.char_id)
ORDER BY
sql_rank.pvp DESC
LIMIT 3
");

	while( $fetch = mysql_fetch_array( $SQL )){
		$name = $fetch [name];
		$pvp_point = $fetch [pvp];
		echo htmlspecialchars($name,ENT_COMPAT,TIS-620)." $name [คะแนน: $pvp_point]<br />\n";
	}
เพราะว่า มันมี CP ของฝรั่งเขาทำไว้ ซึ่งแสดงผลในเวป ได้ชื่อถูกต้องหมดเลย (ตรงกับในเกม) แต่ผมเขียนแบบนี้แล้วมันมีอักขระประหลาด ๆ เหมือนที่แสดงไว้ในภาพครับ

หมายเหตุ: ผมไม่ได้มีความรู้เรื่อง mysql กับ PHP มากนัก จริง ๆ มีน้อย เพียงแต่พอเข้าใจหลักการ และเขียน script ของเกมพอได้ ซึ่งตัว script มันก็มาจากภาษา C อีกทีแต่ไม่ได้มีความสามารถมากอะไร มีขอบเขตจำกัด ทำให้ผมเขียนได้ และเข้าใจหลักการอยู่บ้าง แต่ลงลึกระดับพวกนี้ผมไม่สามารถแก้ไขได้ครับ

ขอบคุณครับ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 23244
Joined: 22/09/2008 6:18 pm
Contact:

Re: การแสดงอักขระพิเศษ (พิมพ์ผ่านคีย์บอร์ดด้วยปุ่ม Alt+ตัวเลข) บนเวปทำอย่างไงครับ

Post by mindphp » 18/06/2011 8:12 pm

แบบนี้้ต้องเขียน function มาแปลง Alt+*** เป็น ตัวอักษร
แล้วล่ะครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

BasicNeeds

Re: การแสดงอักขระพิเศษ (พิมพ์ผ่านคีย์บอร์ดด้วยปุ่ม Alt+ตัวเลข) บนเวปทำอย่างไงครับ

Post by BasicNeeds » 18/06/2011 9:01 pm

ขอบคุณครับ เดี๋ยวผมคงต้องค่อย ๆ ทยอยดูว่า function ไหนใน CP ที่มันแปลงตรงนี้ได้ อาจจะนานหน่อย -*- เพราะ cp เขาเขียนไว้มีความสามารถและรายละเอียดค่อนข้างเยอะ แต่อย่างน้อยก็สบายใจขึ้นว่า มาถูกทาง

ACAD-2008

Re: การแสดงอักขระพิเศษ (พิมพ์ผ่านคีย์บอร์ดด้วยปุ่ม Alt+ตัวเลข) บนเวปทำอย่างไงครับ

Post by ACAD-2008 » 19/06/2011 4:48 pm

เขียนเองขึ้นมาใหม่ก็ได้ครับ
ใช้ function เกี่ยวกับการค้นหาและแทนที่เข้ามาช่วยอีกต่อหนึ่ง

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - PHP”

Who is online

Users browsing this forum: Bing [Bot], Google Adsense [Bot] and 16 guests