針對(duì)云開的用AS2解決onID3的亂碼作了一點(diǎn)改進(jìn),可以在MX中使用
改動(dòng):
- 將類封裝成簡單的function - 運(yùn)行前后不改變?cè)瓉淼?System.useCodepage 值
代碼:
function ANSI2UTF(ANSI_string) { var temp = !(!System.useCodepage); System.useCodepage = true; var code = ""; for (var i = 0; i<ANSI_string.length; i++) { code += "%"+ANSI_string.charCodeAt(i).toString(16); } var result = unescape(code); System.useCodepage = temp; return result; }
使用示例:
my_sound = new Sound(); my_sound.onID3 = function() { var songName = ANSI2UTF(this.id3.songname); trace("result: "+songName); }; my_sound.loadSound("music.mp3", false);
另外,在Flash幫助中有這樣一段話:
在文檔中請(qǐng)只設(shè)置一次 system.useCodepage 屬性;不要為了使播放器將某些外部文件解釋為 Unicode 并將另一些文件解釋為其它編碼,而多次使用該屬性,原因是這樣做會(huì)產(chǎn)生無法預(yù)料的結(jié)果。
看來這個(gè)函數(shù)可能會(huì)帶來隱藏的問題,至于到底是什幺問題,我目前還沒有遇到。解決mp3ID3亂碼問題還有其它辦法,比如建立utf-8和GB2312/Big5編碼的映像表等,但是都沒有這個(gè)簡單。
現(xiàn)存的問題:
- 只能轉(zhuǎn)換本地編碼到UTF-8,即:簡體系統(tǒng)讀取繁體中文ID3仍然會(huì)有亂碼,同理繁體系統(tǒng)也是 - 只能轉(zhuǎn)換 ID3 V2.0,不能轉(zhuǎn) ID3 V1.0 - 只能轉(zhuǎn)換ID3,對(duì)于更加廣泛的txt等外部文本,轉(zhuǎn)換方法仍然存在問題
到論壇討論
出處:藍(lán)色理想
責(zé)任編輯:qhwa
◎進(jìn)入論壇Flash專欄版塊參加討論
|