ผมได้ติดตั้ง Audio module ที่เวบซึ่งใช้ Drupal 5.1
การทำงานทุกอย่างเป็นไปได้ปกติ ยกเว้นการแสดงผลของข้องมูลเพลง พวกชื่อผู้แต่ง อัลบั้ม นักร้อง ฯลฯ มันกลายเป็นภาษาต่างดาว ลองเข้าไป edit content แต่คราวนี้กลับมาเป็น "???? ??? ????? "
ใครรู้สาเหตุและวิธีแก้ไขช่วยด้วยครับ
ตัวย่าง (เนื่องจาก upload รูปไม่ได้ ดังนั้นตามไปดูของจริงที่เวบนะครับ)
รอบแรก http://www.aeawthatsong.com/node/65
รอบหลังจากนั้น http://www.aeawthatsong.com/node/33
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น
ลองใช้ itune เปิดเพลงเพื่อแก้ Id3 (อะไรสักอย่างนี่แหล่ะครับ)
แล้วลองอัพโหลดอีกทีน่าจะหาย
ผมเคยเป็น
ลองแล้วเหมือนเดิมครับ
มันเกิดจาก character encoding ไม่ตรงกัน drupal จะใช้ urf-8 ทั้งหมด ถ้าจะให้ดีก็ใส่เป็น utf-8 มาเลย หรือไม่ก็ต้องลงโมดูลของ php อย่างพวก mbstring iconv หรือ recode
ลองใช้ itune แก้ tag แล้วก็อาการเดิมครับ
"โมดูลของ php อย่างพวก mbstring iconv หรือ recode" ที่เป็น plug-in ของ drupal หรือเปล่าครับ (หาที่ drupal.org ไม่เจอ)
ตรวจดู phpinfo() ของ host แล้วก็มี mbstring และ iconv อยู่แล้วครับ
recode ทำอย่างไรครับ
ควรจะ focus ไปที่ audio module หรือ getID3 หรือ player ดีครับ
ปล.
1. ในไฟล์ของ getID3 จะใช้ ISO-8859-1 แต่ลองเปลี่ยนเป็น UTF-8 แล้วก็ไม่ช่วยอะไร (เปลี่ยนแค่บางไฟล์ที่หาเจอครับ)
2. tag ภาษาอังกฤษไม่มีปัญหาพวกนี้นะครับ ภาษาไทย
โมดูล audio จะสมมติว่าใช้ character encoding เป็น UTF-8 ยกเว้น id3v1 จะใช้ ISO-8859-1 ผมแนะนำว่าให้ลบ id3v1 ออกให้หมด เวลาอ่านมันจะได้ไปอ่าน id3v2 ทั้งหมด
ในที่สุดก็แก้ได้แล้วครับ หลังจากลองอยู่หลายวิธี
ก็ทำไปหลายอย่างนะครับ
แต่ที่หลักๆที่น่าจะทำให้เกิดผลก็น่าจะเป็นดังนี้
1. ไฟล์ audio_getid3.module
แก้เป็น
2. ไฟล์ getid3\getid3\write.php
line 55 var $tag_encoding = 'ISO-8859-1'; line 57 var $id3v2_tag_language = eng'; line 581 $tag_data_real['title'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', @implode(' ', @$this->tag_data['TITLE'])); line 582 $tag_data_real['artist'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', @implode(' ', @$this->tag_data['ARTIST'])); line 583 $tag_data_real['copyright'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', @implode(' ', @$this->tag_data['COPYRIGHT'])); line 584 $tag_data_real['comment'] = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', @implode(' ', @$this->tag_data['COMMENT']));แก้เป็น
line 55 var $tag_encoding = 'UTF-8'; line 57 var $id3v2_tag_language = 'tha'; line 581 $tag_data_real['title'] = getid3_lib::iconv_fallback($this->tag_encoding, 'UTF-8', @implode(' ', @$this->tag_data['TITLE'])); line 582 $tag_data_real['artist'] = getid3_lib::iconv_fallback($this->tag_encoding, 'UTF-8', @implode(' ', @$this->tag_data['ARTIST'])); line 583 $tag_data_real['copyright'] = getid3_lib::iconv_fallback($this->tag_encoding, 'UTF-8', @implode(' ', @$this->tag_data['COPYRIGHT'])); line 584 $tag_data_real['comment'] = getid3_lib::iconv_fallback($this->tag_encoding, 'UTF-8', @implode(' ', @$this->tag_data['COMMENT']));3. getid3\getid3\getid3.php
แก้เป็น
นอกจากนั้นยังต้องตามไปแก้ไข content ผ่านระบบ admin content edit ใหม่เพราะว่าเพลงที่ create ไว้แล้ว encoding มักจะยังไม่ตรงครับ
ส่วนอื่นๆที่ทำไปไม่น่าจะส่งครับ ยังไงเดี๋ยวมีเวลาจะทดสอบอีกครั้งตอนนี้ขอพักไว้ก่อน (มีงานด่วน)
ขอบคุณ segree และ dark.angular ครับ
ความเห็นผมนี่ไม่ได้ช่วยอะไรเล้ย น่าอาย -_-"