Posts Tagged ‘编码转换’

Actionscript 3.0对读入的文件进行编码转换(GBK->UNICODE)

星期三, 10月 29th, 2008

今天在flex3.0 中,要读入一个gbk编码的文件,然而一显示,却是乱码。这是因为flex默认的编码格式是unicode,而gbk编码则被视为单字节的西欧字符的组合了。

public var loader:URLLoader = new URLLoader();

var request:URLRequest = new URLRequest(”http://someurl”);
loader.dataFormat = “binary”;
loader.load(request);
loader.addEventListener(Event.COMPLETE, checkusernameResult);

public var resultstr:String;

public function checkusernameResult(e:Event):void {
var byteArray:ByteArray = ByteArray(loader.data);
try {
resultstr = byteArray.readMultiByte(byteArray.length, “GBK”);
}
catch(e:EOFError) {
}
}

其中黑体的一句很重要,loader的默认的dataFormat是”text”,如果用text格式读进来,那数据在loader里面已经是unicode的西欧字符方式来保存,也没有办法直接赋值给ByteArray。

ByteArray的构造函数里面必须也是一个ByteArray,当你用binary读进URLLoader中时,data的格式自动转为ByteArray,跟原始数据是一致的。

ByteArray的readMultiByte方法可从ByteArray的数据中按照指定编码读出数据。

===================================================

虽然说adobe的文档很多很全,但是要找到这些合适自己使用的用例还是比较困难的,上面使用binary读入的代码是猜出来的……

word中使用VBA进行全角符号转半角

星期四, 9月 4th, 2008

Sub 字母数字符号全角转半角()

‘ 字母数字符号全角转半角 Macro
‘ 宏在 2005-10-14 由 ZhengRC 创建

Dim qjsz, bjsz As String, i As Integer ‘定义qjsz(全角数字)、bjsz(半角数字)为字符串型,i为整数型

qjsz = “0123456789abcdefghijklmnopqrstuvwxyz

ABCDEFGHIJKLMNOPQRSTUVWXYZ,./<>?;':”"[]{}\|=-+_)(*%$#@!`~&

bjsz = “0123456789abcdefghijklmnopqrstuvwxyz

ABCDEFGHIJKLMNOPQRSTUVWXYZ,./<>?;’:”"[]{}\|=-+_)(*%$#@!`~& ”

Selection.WholeStory

For i = 1 To 95 ‘循环10次

With Selection.Find

.Text = Mid(qjsz, i, 1) ‘mid函数:返回文本字符串中从指定位置开始的特定数目的字符,每次取一个数字

.Replacement.Text = Mid(bjsz, i, 1) ‘将用于替换的相应位置的半角数字

.Format = False ‘保留替换前的字符格式

.Execute Replace:=wdReplaceAll ‘用半角符号替换全角符号

End With

Next i

End Sub

———————————————————————–

把上面的VBA函数保存在word的宏里面,调用即可