IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> มาครับ มาดูกันให้เคลีย utf8 กับ phpmyadmin, ภาษายึกยือ ปัญหาที่แก้ไม่ตก ของบางคน
ZePhy
post Aug 7 2007, 11:49 PM
Post #1


Newbie
*

Group: Members
Posts: 4
Joined: 7-August 07
Member No.: 13914



จริงๆ คอยตามอ่านความรู้ในนี้มานานละ แต่ไม่ได้ mem ซักที วันนี้ได้โอกาส เลย mem ซักหน่อย

หลายท่านเชี่ยวชาญ utf-8 อยู่แล้ว ผ่านเลยครับ

QUOTE
ก่อนอื่นผมใช้ตามนี้นะครับ
Apache 2.2.4
PHP 5.2.3
MySQL 5.0.45
phpMyAdmin-2.10.2

OS:XP SP2
default lang : eng
charset และ collation ทุกที่เป็น utf-8 หมดทั้ง db และตาราง
ภาษาApache Environment th


ก็เข้าเรื่องเลยนะครับ อาจจะตรงกับที่หลายๆคนอยากรู้ เพราะผมอ่านมาจากเว็บนี้ หลายกระทู้แก้ส่วนใหญ่กระทู้จะนานแล้ว แก้ตามแล้วไม่ได้ผล ที่ไม่ได้คงเป็นเพราะเวอร์ชันใหม่กว่าหรือปัจจัยอย่างอื่น ก็ไม่ทราบได้ เลยลองๆดู(ได้มาพักนึงละแต่วันนี้มีเหตุต้องมาโพส)
หลายๆคนคงเป็น ตอนจะใช้ utf-8 คงใช้ code ดังนี้
CODE
ส่วนของหน้าเว็บ
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"/>

ส่วนติดต่อ
mysql_query("SET NAMES 'UTF-8'");
mysql_query("SET character_set_results='UTF-8'"); // <-- จริงๆบรรทัดนี้ไม่ต้องก็ได้ บรรทัดบนรวมอยู่แล้ว


เอ๊ะก็ดูจะหมดแล้วนี่หว่า ทั้งหน้าเว็บก็แสดงไทยได้ดี แต่ทำไมเข้าไปดูใน phpmyadmin เป็นแบบนี้

ยึกๆยือๆ แต่ไม่ใช่ ????? นะครับ คนละกรณีกัน(ขอแก้นะเพราะ) เว็บนี้ char ไม่ตรงกันทำให้เพี้ยน

แก้ไงดีง่า ไม่รู้จะตั้งไรแล้ว เครียดๆ


มาๆ เรามาดูกันว่า ทำไงให้หน้าเว็บและ phpmyadmin อ่านไทยได้สมบูรณ์
โค้ดเจ้ากรรมมันอยู่ที่
CODE
UTF8 กับ UTF-8 ไม่เหมือนกันตอนติดต่อ

ซึ่ง UTF8 จะอ่านไทยได้ใน phpmyadmin ด้วย แต่ UTF-8 phpmyadmin อ่านไม่ออก ยึกๆยือๆ รู้สึกปัญหานี้หลังๆ คงเคยเจอกันแน่นอน

เพื่อความสะดวก ในไฟล์ที่ติดต่อ database เป็นแบบนี้ครับ จะได้เพิ่มแค่ที่เดียว
CODE
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "xxxx";
$dbname = "yourDB";

$dbc = mysql_connect($dbhost,$dbuser,$dbpass) or die ("Can not connect MySQL");
$dbs = mysql_select_db($dbname) or die ("Can not connect database");
mysql_db_query($dbname,"SET NAMES UTF8");//เพิ่มตรงนี้บรรทัดเดียว สบายแล้ว สากลๆ utf8


หน้าอื่นก็ คิวรี่ปกติเลยครับ

** ถ้าเกิดใช้ utf8 แล้วข้อมูลเก่า utf-8 เอามาใช้ไม่ได้นะครับ บอกก่อน **
แต่ถ้าเปลี่ยนกลับเป็น mysql_db_query($dbname,"SET NAMES UTF-8"); จะอ่านของเก่าได้แต่ phpmyadmin อ่านไม่ออก

ทีนี้ว่าในส่วนของ Browser กันบ้าง
CODE
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"/>
มีค่าเท่ากับ
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF8"/>

คือใน browser ใช้ได้เหมือนกันครับ แต่ตัวบนดูจะเป็นมาตรฐานกว่า

** แนะนำสำหรับคนพึ่งเปลี่ยนมาใช้ PHP5 (มีอีกเยอะเลยที่ยังใช้4อยู่ เพราะห่วงเรื่องภาษา กับ ความเคร่งครัดของ5นี่แหละ) หรือ ใช้ tis-620 กับ php5 ยังไงลองมาใช้ utf-8 ดูสิครับ แล้วคุณ จะหมดปัญหาเรื่องภาษาไปเลย ยืดหยุ่นกว่ามาก เมื่อทำทุกอย่างได้เข้าที่แล้ว

ปล.ผิดพลาดขออภัยด้วยละกัน
ที่คิดจะเขียนเพราะวันนี้ เถียงกับคนอยู่ว่า เว็บอ่านออกพอใน DB อ่านไม่ออกเป็นปกติ
ใครๆก็เป็นกัน
ผมก็หงุดหงิดสิ ยิ่งเป็นคนเถียงกับผมมีอาชีพ programer ด้วยน่าจะรู้ code ถ้ามันตรงกันจริง ต้องอ่านได้สิ
ทำงานที่ DB บางทีเร็วกว่าเยอะเลย ก็เลยได้เรื่องนี้มาเล่ากันฟัง

สมาชิกใหม่ฝากตัวด้วยครับ biggrin.gif

ไว้ครั้งหน้าถ้ามีเวลา จะมาพูดถึง mod rewrite กันครับ

This post has been edited by ZePhy: Aug 9 2007, 10:36 AM
Go to the top of the page
 
+Quote Post
natty
post Aug 8 2007, 12:53 AM
Post #2


Star
Group Icon

Group: Star
Posts: 950
Joined: 7-March 07
From: Bottler
Member No.: 11555



อืม ไม่เคยรู้มาก่อนเหมือนกันค่ะ และมีปัญหาเรื่องนี้บ่อยๆ ขอบคุณที่มาแชร์นะคะ

ป.ล. จริงๆ กระทู้ของคุณน่าอ่านมากเลยค่ะ มีประโยชน์มากๆ ขอบคุณล่วงหน้าค่ะ

This post has been edited by natty: Aug 8 2007, 05:36 AM
Go to the top of the page
 
+Quote Post
juacompe
post Aug 8 2007, 02:24 AM
Post #3


Site Admin
****

Group: Admin
Posts: 2517
Joined: 12-January 05
From: Compe
Member No.: 2959



จริงๆแล้วปัญหา character encoding เนี่ยนะครับ วิธีแก้มีวิธีเดียว ง่ายๆเลยด้วย คือ "ตั้งแต่ database จนถึงหน้าจอ set ให้เหมือนกันให้หมด" แค่นี้ก็ใช้ได้แล้วครับ

แล้วปัญหานี้มันยากตรงไหน?
- มันยากตรงที่ คนถามไม่รู้ว่าต้อง set ที่ไหนบ้าง? ขอแค่ระหว่างทางจาก database ถึงหน้าจอ มีซักที่ที่ set ไม่ถูก แค่นี้มันก็เสียแล้ว จริงไหมครับ?
- DBMS คนละยี่ห้อกัน ก็มีวิธี set ต่างๆกัน Web Server ก็เช่นเดียวกัน

แล้วสาเหตุจริงๆที่มันยากมากๆๆๆๆๆ คือ...
- ท่านๆคนถามทั้งหลาย ไม่เคยจะบอกเลย ว่าตัวเอง set ตรงไหนมาแล้วบ้าง? set อย่างไร? environment ที่ใช้ก็ไม่เคยจะบอก และที่แย่ที่สุด คือพอแก้ได้ ก็หายจ๋อย มีคนน้อยมากๆ ที่จะกลับมาสรุปว่า ปัญหาตัวเองที่เกิดขึ้นนี้ มันเกิดเพราะอะไร? (ซึ่งส่วนใหญ่ก็เป็นความซุ่มซ่ามนั่นแหละครับ ก็เลยอาย ไม่อยากบอก แต่ว่า..) จะมีใครเข้าใจบ้างไหม? ว่าความซุ่มซ่ามของคุณ กับเวลาที่คุณเสียไป (รวมกับเวลาของคนที่มานั่งช่วยคุณแก้ปัญหา) มันสามารถ reuse ได้ ด้วยการกระทำง่ายๆ แค่สรุปปัญหาของตัวเองให้เป็นรูปแบบที่อ่านง่ายๆ เพื่อในอนาคต คนอื่นจะได้มา search ได้ อย่างที่คุณ ZePhy ทำ ทำให้พวกเราได้รู้ว่า
QUOTE
ถ้าสำหรับ environment แบบข้างล่าง
QUOTE (ZePhy @ Aug 7 2007, 11:49 PM) *

Apache 2.2.4
PHP 5.2.3
MySQL 5.0.45
phpMyAdmin-2.10.2

แล้ว
UTF8 กับ UTF-8 ไม่เหมือนกันตอนติดต่อ

OS: ???
default language ใน OS: ???
setting เกี่ยวกับภาษาใน phpinfo: ???
charset และ collation ของ database: ???
charset และ collation ของ table: ???


ขอบคุณครับ -/\-

ฝากไว้ให้คิด...
- ปัญหาเรื่อง encoding เป็นตัวอย่างที่ชัดเจนมากๆ ของหนึ่งในข้อมูลที่ล้ำค่า แต่ถูกทิ้งให้รกจนคุ้ยไม่เจอ
- คิดว่า narisa มีคน post วันละกี่ post ครับ? ถ้าเจ้าของกระทู้ไม่ดูแลกระทู้ตัวเอง จะ admin หรือใครก็มาช่วยดูแลไม่ไหวหรอกนะครับ

This post has been edited by juacompe: Aug 8 2007, 02:43 AM
Go to the top of the page
 
+Quote Post
ZePhy
post Aug 8 2007, 02:37 AM
Post #4


Newbie
*

Group: Members
Posts: 4
Joined: 7-August 07
Member No.: 13914



^
^

ปัญหาแบบผมน่าจะเจอกับ เวอร์ชันหลังๆนะ ไม่ค่อยแน่ใจเมื่อก่อนใช้ tis-620

ปล. edit ให้แล้วครับ

This post has been edited by ZePhy: Aug 8 2007, 02:52 AM
Go to the top of the page
 
+Quote Post
juacompe
post Aug 8 2007, 02:45 AM
Post #5


Site Admin
****

Group: Admin
Posts: 2517
Joined: 12-January 05
From: Compe
Member No.: 2959



QUOTE (ZePhy @ Aug 8 2007, 02:37 AM) *
ปล. edit ให้แล้วครับ

ขอบคุณอีกทีครับ ^ ^
ปล.
- ยินดีต้อนรับสมาชิกใหม่นะครับ ^ ^
- edit ให้แล้วเหมือนกัน ^ ^
- อ้อ อีกอย่างครับ ถ้าคุณ ZePhy สามารถทดสอบได้ ว่าพวกข้อมูล environment ที่หายไป
QUOTE
OS: ???
default language ใน OS: ???
setting เกี่ยวกับภาษาใน phpinfo: ???
charset และ collation ของ database: ???
charset และ collation ของ table: ???

จะกระทบกับวิธีแก้ปัญหาวิธีนี้ไหม? จะทำให้ solution นี้มีประโยชน์สูงสุดครับ หรือหากคุณ ZePhy ไม่สะดวก ขอเพียงเติมข้อมูลที่ผมสงสัยให้หน่อย จะเป็นความกรุณามาก อย่างน้อย หากท่านอื่นมีปัญหาเช่นเดียวกับคุณ ZePhy จะได้เช็คค่าเหล่านี้ให้ตรงกัน (ข้อมูลเหล่านี้คือข้อมูลที่ผมเชื่อว่า หากเปลี่ยนให้ต่างกันกับเครื่องของคุณ ZePhy แล้ว จะส่งผลกระทบกับวิธีนี้ครับ)

This post has been edited by juacompe: Aug 8 2007, 02:52 AM
Go to the top of the page
 
+Quote Post
catz001
post Sep 9 2007, 06:24 AM
Post #6


Newbie
*

Group: Members
Posts: 26
Joined: 19-December 06
Member No.: 10550



เคลียร์สุดๆ ครับกระทู้นี้ ตอนนี้ผมหันมาใช้ utf8 ทั้งหมดแล้วครับ
Go to the top of the page
 
+Quote Post
madeks
post Oct 3 2007, 07:03 PM
Post #7


Newbie
*

Group: Members
Posts: 13
Joined: 4-April 04
Member No.: 1518



เอ่อ ขอเสริม condition เพิ่มอีกอัน คือ encoding ของ file คับ

คือถ้าเรา implement บน window default ของ มันจะเปน ansi ซึ่ง อาจจะทำให้มันมีปันหาได้คับ (ดช่น insert ข้อมูล ไม่เข้า)

ก้อให้เราเปลี่ยน encoding ให้เปน utf-8 ซะ
อาจจะ ทำโดยการเปิด notepad แล้ว save as แล้วก้อเปลี่ยน encoding คับ


ปล. ที่ผมใช้นะคับ

OS win XP
PHP Version 5.2.3
DB : mysql 5.0.37
Go to the top of the page
 
+Quote Post
nengsite
post Jan 2 2008, 12:14 PM
Post #8


Newbie
*

Group: Members
Posts: 2
Joined: 2-January 08
Member No.: 16748



ผมเคยใช้ host ฟรีของต่างประเทศแล้วมีปัญหาเรื่องนี้มาก คือ หัดเขียน php ทำกระดานตอบคำถามธรรมดา แต่ไม่รองรับภาษาอังกฤษจนเพื่อนถาม เมิงทำให้ใครเข้าหวะ ผมละฮาเลย
ขอบคุณมากครับ
Go to the top of the page
 
+Quote Post
squalltua
post Jan 7 2008, 02:38 PM
Post #9


Newbie
*

Group: Members
Posts: 4
Joined: 7-January 08
Member No.: 16825



ขอบคุณมากมากครับกำลังติดเลย
Go to the top of the page
 
+Quote Post
kingadora
post Jan 17 2008, 08:33 PM
Post #10


Newbie
*

Group: Members
Posts: 2
Joined: 17-January 08
Member No.: 17012



ผมก็ทำตามคุณ Zephy แล้วน่ะครับแต่ก็ ยังไม่หาย งงมากๆๆ ลอง tis620_thai_ci ตั้งแต่ เซตอัพ แล้วก็ยังเป็น ?????อยู่

ปล.ที่งงคือ ตอนเลือก การเรียงลำดับ และconnection collaction ผมเลือก เป็น utf_8_unicode_ci อ่ะครับ
ผิดถูกประการใดขออภัยด้วยน่ะครับ อยากได้คำแนะนำ มือใหม่หัดเขียนครับ นั่งบ้ามา2วันแระครับ ยังแก้ไม่ได้ งานไม่เดินเลยจิงๆๆ
ขอความเมตตากรุณาหน่อยครับ
Go to the top of the page
 
+Quote Post
boybdream
post May 24 2008, 06:12 AM
Post #11


Newbie
*

Group: Members
Posts: 7
Joined: 21-April 08
Member No.: 18528



ไม่เจอกระทู้นี้คงสงสัยไปอีกนานเลยครับ กระจ่างแล้วครับวันนี้ ติดตรง UTF8 กะ UTF-8 นี่เอง บ้าจิง ๆ biggrin.gif

ขอบคุณมากครับ
Go to the top of the page
 
+Quote Post
teayza31
post Jun 23 2009, 03:46 PM
Post #12


Newbie
*

Group: Members
Posts: 16
Joined: 16-June 09
Member No.: 23265



ขอบพระคุณมากครับ งง และ สงสัยมานานละ กระจ่างสักที
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 9th February 2010 - 08:10 PM