在最近的研究过程中发现一个问题,as3中加载了mp3后所输出的ID3信息始终为乱码.通过dataArray可以做到ID3信息的编码转换.先来看一下原理.
import flash.utils.ByteArray
在管方文档中说明得很清楚,The ByteArray class provides methods and properties to optimize reading, writing, and working with binary data. ByteArray 是用以处理二进制格式数据的. 有趣的是,ByteArray可以使用标准数组访问.如myByteArray[i],将会返回该字节的十进制值.
再看第二步,UTF-8的二进制结构.如下为一个示例的UTF-8编码表:
UTF-8
ASCIIHEX
BIN
DEC
DEC C2 A0
1100-0010 1010-0000
194 160
160 C3 80
1100-0011 1000-0000
195 128
192 C3 81
1100-0011 1000-0001
195 129
193从该表中可以看到,
所有双字节都以194,195作为头字节.而以195为头字节的双字节所取的ASCII 值为后字节值加64.
以C3 81为例,头字节最左侧的11表示这是一个双字节值,尾字节的最左侧10同样 表示这是一个双字节值且为尾字节.
从结构上来看,C3 81在GB2312或Latin-1等编码中.以单子节表现为
11
000001
,在utf-8中则为 110000
11
10
000001
.关于编码格 式的问题,就点道为止吧.
结合以上的原理,我写了下面这个方法来实现ID3信息的编码转换:
/*
*id3信息编码转换
*/
private function EncodeUtf8(str : String):String {
var oriByteArr : ByteArray = new ByteArray();
oriByteArr.writeUTFBytes (str);
var tempByteArr : ByteArray = new ByteArray();
trace(str);
for (var i = 0; i
主要的方法是readMultiByte,结合帮助上面的代码很容易理解,就不多说废话了。附上一个实例的
源文件
.另外, 对mp3中各中编码格式的信息测试还不完全,有问题欢迎各位补全.
本文参考了以下文章,对我的帮助比较大:
http://www.aiview.com/2006/03/translate_latin-1_in_utf- 8_back_to_ascii.html
(作者提供了两个DB2中转义的方法,第二个与我的方法很象)
http://25swf.blogbus.com/logs/12867189.ht ml
(比我先想到,不过方法思路有点小问题)
http://blog.benstucki.net/?p=3
(该页内容为结合URLStream读取ID3的方法,关键方法相同)
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/2007.html
发表评论
-
Flash Media Server 起步(4)视频,流
2010-04-10 11:58 725ps.年底工作忙,没时间学习了啊。。。昨天还破天荒首次加班到半 ... -
Flash Media Server 起步(6)写个简单的聊天室
2010-04-10 11:58 704ps:发现有转载的,声明偶这不算连载教程。。只是偶自己的笔记加 ... -
Flash Media Server 起步(6)写个简单的聊天室
2010-04-10 11:58 667ps:发现有转载的,声明偶这不算连载教程。。只是偶自己的笔记加 ... -
Flash Media Server 起步(7)与server端交互
2010-04-10 11:58 631这是目前为止最难的了 ... -
Flash Media Server 起步(7)与server端交互
2010-04-10 11:57 600这是目前为止最难的了 ... -
使用as3的Timer类
2010-04-09 13:29 918很好用 import flash.utils.Timer; ... -
使用as3中EventDispatcher类
2010-04-09 13:28 840用法大同小异 package{ import flash. ... -
使用as3中EventDispatcher类
2010-04-09 13:28 696用法大同小异 package{ import flash. ... -
as3中的访问权限
2010-04-09 13:28 643其实,as2会了,上手as3很快 private关键字指定一 ... -
as3中的访问权限
2010-04-09 13:28 545其实,as2会了,上手as3很快 private关键字指定一 ... -
as3 使用sound类(翻译)-暂停和继续播放声音
2010-04-09 10:32 743[1b]问题十[/1b] 如何暂停声音,如何从暂停的地 ... -
as3事件消息中心
2010-04-09 10:32 551在As2.0时代,我习惯于利用一个自定义的全局事件管理器来管 ... -
as3事件消息中心
2010-04-09 10:31 788在As2.0时代,我习惯于利用一个自定义的全局事件管理器来管 ... -
DataArray之烦人的ID3乱码
2010-04-09 10:31 605在最近的研究过程中 ... -
跑动的小火柴人(flash动画)
2010-04-08 10:50 474本教程描绘的是完全用ActionScript做的一个火柴棍小人 ... -
Flash遮照制作3D动画视觉效果
2010-04-08 10:50 606基础教程,主要教给大家利用Flash中的遮照实现3D效果动画。 ... -
Flash遮照制作3D动画视觉效果
2010-04-08 10:49 682基础教程,主要教给大家利用Flash中的遮照实现3D效果动画。 ... -
指针随鼠标移动的flash卡通时钟
2010-04-08 10:49 566。先看下时钟效果: var fnum:Number = ... -
指针随鼠标移动的flash卡通时钟
2010-04-08 10:49 644。先看下时钟效果: var fnum:Number = ... -
用flash给人物侧面绘画
2010-04-08 09:02 625一.先来看看效果: 二.下面我们开始讲解制作过程: 1.使 ...
相关推荐
在使用myeclipse过程中,我使用ajax同步请求传递参数到后台却出现中文乱码,这是我解决问题的代码,希望对您有所帮助
3,连接字符串的写法:Data Source='hostip';Port=4101;Database=db;Uid=username;Pwd=pwd; 4,乱码问题:sybase使用latin1字符集的时候,c#中读取字符串会是乱码,进行如下转换就行: System.Text.Encoding....
目前在做一个项目要求导出pdf文件,但发现导出中文乱码,研究了好久终于解决,现整理好分享给大家
HttpContext.Current.Server.MapPath("~/App_Data/LocalData.ini")); 2.存数据 iniFile.WriteValue(SectionName, KeyName, KeyValue); 3.取数据 iniFile.GetString(SectionName,KeyName,DefaultValue);
为什么wireshark有的地方显示的是乱码 (https://blog.csdn.net/javajiawei/article/details/84329847)博文中用的几个报文
解决安装app后产生的文件夹选项乱码,双击运行“文件夹选项乱码.reg”。
dataArray[2] = checkBox3.Checked; dataArray[3] = checkBox4.Checked; dataArray[4] = checkBox5.Checked; dataArray[5] = checkBox6.Checked; dataArray[6] = checkBox7.Checked; dataArray[7] = ...
可以解决中文乱码问题,共享给大家,解决UTF-8 转换 gb2312,直接放到Bin目录中并引用
C#连接sybase查询数据时,出现中文乱码的完美解决办法。
IO函数调用测试
我当前调试的是kettle 5.4.0.1版本,修复job中发送邮件时候中文乱码问题: 替换 data-integration\lib\kettle-engine-5.4.0.1-130.jar 这个jar包下 data-integration\lib\kettle-engine-5.4.0.1-130.jar\org\...
代码如下: public class BinarySearch { public BinarySearch(){ } int[] dataArray=new int[]{1,2,3,4,5,6,7,8}; public int biSearch(int key){ int low=0; int high=dataArray.length-1; System.out.println(...
解决Jmeter5.3上传文件中文乱码问题和录制脚本中文乱码问题,替换原本的lib\ext目录下的ApacheJMeter_http.jar文件,上传文件时,需要勾选“对POST使用multipart / form-data” 和 “与浏览器兼容的头”选项,并在...
impala的substr()和substring()函数是不支持中文的,创建一个udf解决impala sql中substr()函数截取中文字符串乱码的问题
matlab2016b中文显示乱码,修改lcdata.xml文件,进行覆盖安装。 具体操作说明见 https://blog.csdn.net/shuitianyiwu/article/details/122771225
java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket
本文实例讲述了php使用fgetcsv读取csv文件出现乱码的解决方法。分享给大家供大家参考。具体分析如下: ... while ($data = fgetcsv($handle, 1000, “,”)) { $num = count($data); echo “<p> $num
修改了jar源代码,解决multipart/form-data上传包含中文文件名乱码问题,覆盖apache-jmeter-4.0\lib\ext目录下ApacheJMeter_http.jar即可。
如若使用xdata该如何修改程序,使用data的话往往会出现存储量不足的情况,想借助此程序学习xdata的使用
12C在Linux上中文安装是乱码,将此包下载拷贝到安装文件\database\stage\Components\oracle.jdk\1.6.0.75.0\1\DataFile目录下,替换以前文件即可。