+ พี่ๆโปรแกรมเมอร์ เข้ามาที +

เริ่มโดย chonyagusa, 21 กุมภาพันธ์ 2007, 01:08:29

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

chonyagusa

ตอนนี้เดือดร้อนมาก

โฮสนอกที่ใช้ไม่รู้มันรองรับหรือไม่รองรับภาษาไทย

คือผมใช้บอร์ด IPB [ Invision Power Board 2.2.1] ล่าสุด

ปัญหาเรื่องภาษาไทยก็เกิดขึ้น

ผมใช้ character set iso-8859-1

ซึ่งลองโพสดู

เนื้อหาปกติดี แต่ที่ไม่ปกติคือ หัวข้อกระทู้ (เท่านั้น) มันชอบตัดประโยค เช่น    
บุตรชาย​​ "​​เยลหลี​​" ​​เพิ่งคลอด​​​ไม่​​​ถึ​ŧ
จบแค่นี่ แปลกมะ?

แต่พอไปดูเนื้อหาข้างในนั้น มันปกติมาก ไม่ตัดคำ ไม่อะไรเลย ปกติทุกอย่าง

อะ พอผมลองมาเปลี่ยนเปง UTF-8
เป็นแบบนี้เลยครับ ทั้งหัวข้อและเนื้อหา
???????????????????????? "????????????????????????" ????????????????????????????????????????????????????????? 17 ????????????.???????????????????????????????????�?????????, ???????????????????????? "????????????????????????" ??????????

ทำนองนี้เลย

พอมาเปลี่ยนเปง tis-620 บ้าง
ก็เป็นแบบ ??????????????????????????????????? ภาษาต่างด้าว !
แถมขึ้น Error ในบางโซนว่า
IPB WARNING [2] mb_substr() [function.mb-substr]: Unknown encoding "TIS-620" (Line: 2794 of /sources/ipsclass.php)

เซงครับเซง

รายละเอียด
# MySQL client version: 5.0.18
# Used PHP extensions: mysql
ชุดตัวอักษร​ (charset) ​ของ​ MySQL:  UTF-8 Unicode (utf8)
MySQL connection collation: tis620_thai_ci [มีให้เลือกไทย แต่มะรู้รองรับไทยได้ป่าว]

คิดว่าพอจะแก้ได้ไหมครับ ท่านโปรแกรมเมอร์ทั้งหลาย
[direct=https://maxiox.com]maxiox[/direct]
[direct=https://maxmazo.com]maxmazo[/direct]

Tee++;

ตอนผมแก้ผมไปแก้ที่ DB เลยเขียนโปรแกรมเรียก Table list มาเลยแล้วใช้คำสั่ง

alter table tablename character set utf8

แบบวนลูป จากนั้นไปหา class ของ ipb ตรงส่วน connect db แล้วเพิ่ม 3 บรรทัดที่บังคับให้ mysql แสดงผลออกมา พอทำจบปุ๊บก็ไม่มีอาการเพี้ยนใดๆ เลย แม่แต่ใน DB ก็เก็บเป็นภาษาไทยถูกต้อง แต่ก้นั่นล่ะ มัน IPB Version เก๊าเก่า  :lol:
[direct=http://laravel.in.th]Laravel in Thai[/direct]
[direct=http://jquerytips.com]jQueryTips by Tee++;[/direct]
[direct=https://www.facebook.com/jQueryTips]jQueryTips Page[/direct]
[direct=https://www.facebook.com/Laravel.in.th]Laravel in Thai Page[/direct]
[direct=https://twitter.com/Teepluss]Teepluss's Twitter[/direct]


chonyagusa

อ้างถึงจาก: Tee++;ตอนผมแก้ผมไปแก้ที่ DB เลยเขียนโปรแกรมเรียก Table list มาเลยแล้วใช้คำสั่ง

alter table tablename character set utf8

แบบวนลูป จากนั้นไปหา class ของ ipb ตรงส่วน connect db แล้วเพิ่ม 3 บรรทัดที่บังคับให้ mysql แสดงผลออกมา พอทำจบปุ๊บก็ไม่มีอาการเพี้ยนใดๆ เลย แม่แต่ใน DB ก็เก็บเป็นภาษาไทยถูกต้อง แต่ก้นั่นล่ะ มัน IPB Version เก๊าเก่า  :lol:

ช่วยสอนแบบละเอียดได้ป่ะครับ พี่ตี๋

ผมไม่ค่อยโปรเรื่องการ ทำนู้นทำนี้กับ SQL
[direct=https://maxiox.com]maxiox[/direct]
[direct=https://maxmazo.com]maxmazo[/direct]

Tee++;

1. ตอนแรกผมก็เรียกคำสั่งนี้มา
show tables from [i]yourdatabase[/i]
2. จากนั้นก็เอามา fetch ด้วยคำสั่ง
alter table $row['table'] character set utf8

เท่านี้ไอ้ Database ที่มัน Set default เป็น latin.... ก็จะถูกเปลี่ยนเป็น utf8_general_ci

ถ้าอยากเซ็ต Database ด้วยก็ใช้
alter database [code]yourdatabase[/code] character set utf8

แต่จริงๆ เอาแค่ Table ก็พอ

จากนั้นไปแกะโคดของ IPB ส่วนที่มัน Select Database หลังจาก select แล้วเรียกคำสั่ง

mysql_query("SET character_set_results=utf8");
mysql_query("SET collation_connection = utf8_general_ci");
mysql_query("SET NAMES 'utf8'");


ถ้ามันเป็น class อยู่ก็อาจเรียกตาม Class มันได้เลยเช่น
$this->query("SET character_set_results=utf8");
$this->query("SET collation_connection = utf8_general_ci");
$this->query("SET NAMES 'utf8'");


สุดท้ายก็ไปเปลี่ยนตรง meta เป็น utf-8 ซะ

อ้างถึงข้อสังเกตุ
mysql ใช้ utf8 ไม่ใช่ utf-8
[direct=http://laravel.in.th]Laravel in Thai[/direct]
[direct=http://jquerytips.com]jQueryTips by Tee++;[/direct]
[direct=https://www.facebook.com/jQueryTips]jQueryTips Page[/direct]
[direct=https://www.facebook.com/Laravel.in.th]Laravel in Thai Page[/direct]
[direct=https://twitter.com/Teepluss]Teepluss's Twitter[/direct]


chonyagusa

ขั้นตอนทั้งหมดทำใน phpMyadmin เหรอครับ
[direct=https://maxiox.com]maxiox[/direct]
[direct=https://maxmazo.com]maxmazo[/direct]

chonyagusa

ผมไม่รู้เลยครับ ว่าให้ทำที่ไหน -*-
[direct=https://maxiox.com]maxiox[/direct]
[direct=https://maxmazo.com]maxmazo[/direct]

chonyagusa

alter table $row['table'] character set utf8

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '['table'] character set utf8' at line 1

Errorที่คำสั่งนี้
[direct=https://maxiox.com]maxiox[/direct]
[direct=https://maxmazo.com]maxmazo[/direct]

sealinda

[direct=http://www.thaiseoboard.com/index.php/topic,95911.msg1197898.html#msg1197898]รับบริจาคของขวัญ สำหรับงานวันเด็ก (ส.ที่ 9 ม.ค. 53 ที่บ้านราชวิถี)[/direct] |[direct=http://www.sealinda.com/]ขายส่งเีครื่องสำอางแบรนด์เนม[/direct] | [direct=http://www.girliza.com/]เทคนิคการแต่งหน้า&บำรุงผิว[/direct]|[direct=http://bookmark.girliza.com]บุ๊คมาร์คแซ่บๆ[/direct]

amaudy

เสี่ยตี๋ปล่อยให้งง

เดี๋ยวก็มาแก้ปมครับ

pete

พี่ตี๋ อย่าพูดภาษาอังกิดได้มั๊ยคับ แปลไม่ออก (ฮา)

ล้อเล่นนะจ๊ะ

naisara

ขอบคุณครับคุณตี๋ เคย PM ไปถามส่วนตัวซึ่งคุณตี๋ก็ ได้ช่วยเหลือเร็วมากๆ แต่ว่าผมมือไหม่อ่ะครับ  ไม่รู้ต้องไปทำตรงไหนอ่ะครับ

Tee++;

เอาแบบนี้ละกันครับ ไม่อยากอธิบายยาวๆ เดี๋ยวไปกันใหญ่ เขียนมาให้เลยล่ะกันครับ

http://nice5ive.org/downloads/mysqlcharset.zip

เอาไปแก้ config ตรงหัวมันนิดนึง มันจะเป็น charset และ collate เป็นตัวที่เรากำหนด โดยเริ่มเปลี่ยนตั้งแต่

database
tables
columns

:P
[direct=http://laravel.in.th]Laravel in Thai[/direct]
[direct=http://jquerytips.com]jQueryTips by Tee++;[/direct]
[direct=https://www.facebook.com/jQueryTips]jQueryTips Page[/direct]
[direct=https://www.facebook.com/Laravel.in.th]Laravel in Thai Page[/direct]
[direct=https://twitter.com/Teepluss]Teepluss's Twitter[/direct]


chonyagusa

ลองแล้วครับ รันได้

แต่พอลองโพส

หัวข้อ ปกติ ไม่โดนตัดแล้ว !
แต่พอมาในเนื้อหา มันโดนตัด แบบนี้

อ้างถึงตอนนี้​​​เดือดร้อนมาก​​

​​โฮสนอกที่​​​ใช้​​​ไม่​​​รู้มันร​�
�​งรับ​​​หรือ​​​ไม่​​​รองรับภาษา​​​ไ�
��​ย​

​​คือผม​​​ใช้​​​บอร์ด​​ IPB [ Invision Power Board 2.2.1] ​​ล่าสุด​​

​​ปัญหา​​​เรื่องภาษา​​​ไทยก็​​​เก​�
�​ดขึ้น​​

​​ผม​​​ใช้​​ character set iso-8859-1

เหอๆๆๆๆๆ

สรุปคือรันแบบไฟล์ที่คุณตี๋ให้มา(UFT-8) ก็แก้ปัญหาเรื่องหัวข้อได้ ทำให้หัวข้อไม่โดนตัดประโยค แต่เนื้อหาจะโดนตัดประโยค

แต่ถ้าปกติ คือ (iso-8859-1) หัวข้อจะโดนตัดประโยค แต่เนื้อหาจะปกติมากๆ ไม่โดนตัดประโยค
[direct=https://maxiox.com]maxiox[/direct]
[direct=https://maxmazo.com]maxmazo[/direct]

chonyagusa

ตารางที่ชื่อว่า ibf_topics มันจะเก็บข้อมูล หัวข้อ

ทำให้มันใช้ utf8 เฉยๆ ได้ไหม

แล้วตารางอื่นๆ ก็ปกติของมัน ทำได้ไหมครับ ?
[direct=https://maxiox.com]maxiox[/direct]
[direct=https://maxmazo.com]maxmazo[/direct]

Tee++;

มันยังไม่จบงัยครับ เหลือส่วนยาก สุดคือการแกะโคด IPB ตรงส่วนการติดต่อ Database มาเพิ่ม 3 บรรทัดอย่างที่บอกไปครับ  :o
[direct=http://laravel.in.th]Laravel in Thai[/direct]
[direct=http://jquerytips.com]jQueryTips by Tee++;[/direct]
[direct=https://www.facebook.com/jQueryTips]jQueryTips Page[/direct]
[direct=https://www.facebook.com/Laravel.in.th]Laravel in Thai Page[/direct]
[direct=https://twitter.com/Teepluss]Teepluss's Twitter[/direct]


chonyagusa

ใน IPB มันมีไฟล์ที่ชื่อว่า mysql_queries.php ไม่รู้ใช่ป่าว

คุณตี๋ลองโหลดไปดูครับ ว่าใช่ป่าว

http://files.icez.net/download/cKXmgvwlZM

จัดไปทั้ง Folder ที่ชื่อว่า SQL เลย
[direct=https://maxiox.com]maxiox[/direct]
[direct=https://maxmazo.com]maxmazo[/direct]

chonyagusa

รบกวนด้วยนะครับคุณตี๋

ผมแอด MSN ไว้ละเด้อ
[direct=https://maxiox.com]maxiox[/direct]
[direct=https://maxmazo.com]maxmazo[/direct]

Tee++;

ไม่ใช่ครับ ทั้ง โฟลเดอร์เป้นคำสั่ง queries ของระบบ

มันน่าจะอยู่ใน

ips_kernel/class_db_mysql_client.php
[direct=http://laravel.in.th]Laravel in Thai[/direct]
[direct=http://jquerytips.com]jQueryTips by Tee++;[/direct]
[direct=https://www.facebook.com/jQueryTips]jQueryTips Page[/direct]
[direct=https://www.facebook.com/Laravel.in.th]Laravel in Thai Page[/direct]
[direct=https://twitter.com/Teepluss]Teepluss's Twitter[/direct]


EThaiZone

อิๆ เข้ามาอ่านเฉยๆ

ลุยเลยพี่ตี๋คนดีของสังคม

นักซ่อมบอร์ด อิๆ  :lol:

chonyagusa

แล้วต้องแก้ไงอ่ะครับพี่ตี๋ T T
[direct=https://maxiox.com]maxiox[/direct]
[direct=https://maxmazo.com]maxmazo[/direct]