Results 1 to 2 of 2

Thread: ทำไงดี PHP +MYSQL แก้ยังไงก็ยังออก ???

  1. #1


    บ้างคนที่เขียน PHP อาจเจอปัญหาที่ว่าโค้ดออกมาเป็น ??? เมื่อเรียกข้อมูลจาก MySQL หลังจากนั้นก็ได้ไปแก้ CHARSET ของ DB แล้วแต่ยังไม่หาย วันนี้เรามีคำตอบให้คุณ

    สำหรับคนที่ยังไม่เคยลองแก้ Charset ลองแก้ดูก่อนนะคับ
    http://www.citecclub.org/forum/-mysql--t2798.html

    เมื่อสุดท้ายลองแก้ Charset แล้วยังไม่หายเรามีวิธ๊ให้คุณเลือก 2 วิธ๊คับ

    1. กลับไปใช้ MySQL 4.0
    เนื่องจากตอนผลใช้ 5.0 แล้วเกิดปัญหา แสดงผลภาษาไทยไม่ได้ แต่พอเปลี่ยนมาใช้ 4.0 ก็กลับมาใช้ได้ (งง)

    2. ใช้ utf8
    และแล้วก็เข้าสู่บทความหลักของกระทู้นี้ (ฮา)
    วิธีนี้ผมคิิดได้จากตอนที่ผมกำลังเขียนโปรแกรมส่งอาจารย์ แต่ผมดันลง MySQL 5.0 แล้วก็ไม่มี MySQL4.0 พยายามแก้ Charset ก็แล้วยังไม่หายจริงๆ เลยใช้วิธีทีนี้ ปรากฏว่าใช้ได้ แต่อาจจะงงนิดหน่อยนะคับ

    ก่อนอื่นขอทบทวน UTF-8 สำหรับผู้ที่ไม่เข้าใจนะคับ

    UTF-8 (Unicode Transformation Format - 8 bit) คือการเข้ารหัส 8 บิทให้กับทุกตัวอักษรบนโลกนี้ พูดง่ายๆ ถ้าจะแสดงภาษาทุกภาษาบนโลกในหน้าจอเดียวกันก็ต้องทำการใช้ชุดตัวอักษร UTF-8 นี้แหละคับ

    ใน PHP มีฟังก์ชันในการเข้ารหัส และ ถอดรหัส UTF-8 อยู่แล้ว (มาถึงตรงนี้หลายคนคงเข้าใจแนวคิดแล้วนะคับ)
    วิธีที่ 2 นี้จะใช้การเข้ารหัสทุกภาษาบนโลกนี้เป็น UTF-8 หลังจากนั้นก็จะทำการแสดงผลกลับออกมาเป็น ภาษาเดิมคับ
    โดยวิธีนี้ผมทดลองบนเครื่องผม โดยแก้ charset ของ MySQL เป็น utf8_unicode_ci (Engine: MyISAM)

    ฟังก์ชันที่เกียวข้องกับวิธ๊นี้ มี utf8_encode() และ utf8_decode() คับ
    วิธีใช้ก็ง่ายๆ จะเข้ารหัสก็ utf8_encode(ข้อความ) จะแปลงรหัสคืนก็ utf8_decode(ข้อความ) ง่ายใช่ไหมคับ

    เมื่อเข้าใจฟังก์ชั่นก็เข้าสู่การประยุกต์ใช้งาน

    เวลาที่เราเขียนโปรแกรม PHP จะทำการแทรกโค้ดภาษา SQL ลงไป (ตัวอย่างคือการรับค่าจาก textbox: Name/Method: Post)
    $sql = "INSERT INTO tests (field1) VALUES ('" . utf8_encode($_POST['Name']) . "';";

    และเวลาเราทำการนำข้อมูลออก
    <?php echo utf8_decode($qrySearch[&#39;field1&#39;]); ?>

    เท่านี้ก็สามารถใช้ภาษาไทยได้แล้วคับ

    วิธีนี้อาจจะงงๆ หน่อย แต่ก็ขอให้เป็นอีกทางเลือกหนึ่งแล้วกันนะคับ (ฮา + งงๆ)
    [url="http://negimatfc.spaces.live.com"]Please Stop Global Warming[/url]
    [url="http://akiakira.elivebox.com"]Aki&#39;s tool[/url] [b]Update:[/b] [color=#444444]BASE 64 TOOL[/color]

    [b][url="http://akiakira.elivebox.com/akigraph"]akigraph[/url] [/b]- free graph opensource (php)

    [img]http://cftsubasa.tirkx.com/quiz/sakura.gif[/img]

  2. #2
    Junior Member
    Join Date
    Jul 2007
    Posts
    5


    ผมว่าใช้วิธีที่สองดีกว่านะ การใช้วิธีที่หนึ่งเหมือนการหนีปัญหายังไงก็ไม่รุ แฮะๆ

    ถ้าผมเข้าใจไม่ผิดนะที่MYSQL 4.0 มันอ่านไทยได้โดยตรงอ่ะ เพราะค่า Defaul ของมันทำงานเข้ากับ UTF - 8 อยู่แล้ว


    ปล. ที่ผมโหวตให้กระทู้นี้ 4 ดาวเลย เพราะเห็นว่าเป็นปัญหาของหลายๆคนที่เพิ่งเริ่มใช้ สองโปรแกรมนี้ร่วมกันครับ รวมถึงผมตอนที่ใช้ครั้งแรกเมื่อหลายปีก่อนด้วย

Similar Threads

  1. Replies: 3
    Last Post: 29-11-2008, 07:53 PM
  2. กลัวถูกถ้ำมอง ทำไงดี?
    By papsiasm in forum Ethical Hacking for Padawan
    Replies: 0
    Last Post: 01-07-2008, 07:34 PM
  3. ไฟล์ .DLL หาย!!! ทำไงดี?
    By controlman in forum Computer Tip & Trick / Tutorial
    Replies: 0
    Last Post: 12-04-2008, 05:02 PM
  4. Replies: 5
    Last Post: 08-10-2007, 02:34 PM
  5. Replies: 1
    Last Post: 11-12-2006, 03:59 AM

Members who have read this thread : 0

Actions : (View-Readers)

There are no names to display.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •