Audio module แสดงผลเป็นภาษาต่างดาวในส่วนของรายละเอียดเพลง

  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.
  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.

ผมได้ติดตั้ง Audio module ที่เวบซึ่งใช้ Drupal 5.1
การทำงานทุกอย่างเป็นไปได้ปกติ ยกเว้นการแสดงผลของข้องมูลเพลง พวกชื่อผู้แต่ง อัลบั้ม นักร้อง ฯลฯ มันกลายเป็นภาษาต่างดาว ลองเข้าไป edit content แต่คราวนี้กลับมาเป็น "???? ??? ????? "
ใครรู้สาเหตุและวิธีแก้ไขช่วยด้วยครับ

ตัวย่าง (เนื่องจาก upload รูปไม่ได้ ดังนั้นตามไปดูของจริงที่เวบนะครับ)
รอบแรก http://www.aeawthatsong.com/node/65
รอบหลังจากนั้น http://www.aeawthatsong.com/node/33

dark.angular's picture

ลองใช้ itune เปิดเพลงเพื่อแก้ Id3 (อะไรสักอย่างนี่แหล่ะครับ)
แล้วลองอัพโหลดอีกทีน่าจะหาย

ผมเคยเป็น

ลองแล้วเหมือนเดิมครับ

sugree's picture

มันเกิดจาก 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 ภาษาอังกฤษไม่มีปัญหาพวกนี้นะครับ ภาษาไทย

sugree's picture

โมดูล audio จะสมมติว่าใช้ character encoding เป็น UTF-8 ยกเว้น id3v1 จะใช้ ISO-8859-1 ผมแนะนำว่าให้ลบ id3v1 ออกให้หมด เวลาอ่านมันจะได้ไปอ่าน id3v2 ทั้งหมด

ในที่สุดก็แก้ได้แล้วครับ หลังจากลองอยู่หลายวิธี

ก็ทำไปหลายอย่างนะครับ
แต่ที่หลักๆที่น่าจะทำให้เกิดผลก็น่าจะเป็นดังนี้

1. ไฟล์ audio_getid3.module

line 270   $getID3->encoding_id3v1   = 'ISO-8859-1;

แก้เป็น

line 270   $getID3->encoding_id3v1   = 'UTF-8';

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

line 24	var $encoding_id3v1  = 'ISO-8859-1';

แก้เป็น

line 24	var $encoding_id3v1  = 'UTF-8';

นอกจากนั้นยังต้องตามไปแก้ไข content ผ่านระบบ admin content edit ใหม่เพราะว่าเพลงที่ create ไว้แล้ว encoding มักจะยังไม่ตรงครับ
ส่วนอื่นๆที่ทำไปไม่น่าจะส่งครับ ยังไงเดี๋ยวมีเวลาจะทดสอบอีกครั้งตอนนี้ขอพักไว้ก่อน (มีงานด่วน)

ขอบคุณ segree และ dark.angular ครับ

dark.angular's picture

ความเห็นผมนี่ไม่ได้ช่วยอะไรเล้ย น่าอาย -_-"

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น