Flex读取非UTF-8中文数据乱码问题的解决方案 flex中文乱码
2010-07-02 15:11
609 查看
找了这么多 总算找个还可以用的东西 浪费了一天的时间。
保存下来
Flex读取非UTF-8中文数据乱码问题的解决方案
Flex应用中经常要读取外部数据,一般情况下,对于读取编码是UTF-8的数据不会有什么问题,因为在Flex中默认的编码就是UTF-8。但遇到读取非UTF-8的数据时,会出现乱码的情况。这个时候需要对读取的内容进行一次转换,以便得到正确的显示。
下面这个例子将会提供一种转换的方法。
先来看代码:
/**********************************************************
* Copyright (C) 2009, DiaboLab.com, All Rights Reserved
* Name : Character Demo
* Author : DiaboLab.com
* EMail : guestsnowl@163.com
* Created Date : 01/15/2009
* Updated Date :
* Description : Flex应用中读取外部中文数据乱码的解决方案
**********************************************************/
–>
Application{
fontSize: 12pt;
}
private var utf8URL:String = "http://www.diabolab.com/demos/character/utf8.txt";
private var gbURL:String = "http://www.diabolab.com/demos/character/gb2312.txt";
//使用默认方式读取UTF-8的数据
private function loadUTF8():void
{
var request:URLRequest = new URLRequest(utf8URL);
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onLoadUTF8);
loader.load(request);
}
//直接将读取内容输出到文本框中,没有问题
private function onLoadUTF8(e:Event):void
{
ta.text += "默认读取UTF-8数据:/n"+e.currentTarget.data.toString()+"/n";
}
//使用默认方式读取GB的数据
private function loadGB():void
{
var request:URLRequest = new URLRequest(gbURL);
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onLoadGB);
loader.load(request);
}
//直接将读取内容输出到文本框中,会发现出现乱码
private function onLoadGB(e:Event):void
{
ta.text += "/n默认读取GB数据:/n"+e.currentTarget.data.toString()+"/n";
}
//使用URLStream取代URLLoader来读取GB数据
private function loadGBTrans():void
{
var request:URLRequest = new URLRequest(gbURL);
var loader:URLStream = new URLStream();
loader.addEventListener(Event.COMPLETE, onloadGBTrans);
loader.load(request);
}
//将读取的内容进行转换后输出,GB的数据被正确显示
private function onloadGBTrans(e:Event):void
{
var stream:URLStream = e.currentTarget as URLStream;
var result:String = stream.readMultiByte(stream.bytesAvailable, "gb2312");
ta.text += "/n转换读取GB数据:/n"+result+"/n";
}
]]>
uft8.txt是一个以UTF-8编码的中文文件。
gb2312.txt是一个以GB编码的中文文件。
这里只是使用txt文件作为例子,xml等文件格式是一样的。
使用URLLoader读取外部数据,在遇到中文非UTF-8编码的数据时出现乱码显示。
使用URLStream代替URLLoader后,在完成读取后使用readMultiByte()方法进行编码转换,就可以得到正确的显示。
上面的例子编译运行例子:http://ria.args.cn/uploads/2009/02/charactertest.swf
保存下来
Flex读取非UTF-8中文数据乱码问题的解决方案
Flex应用中经常要读取外部数据,一般情况下,对于读取编码是UTF-8的数据不会有什么问题,因为在Flex中默认的编码就是UTF-8。但遇到读取非UTF-8的数据时,会出现乱码的情况。这个时候需要对读取的内容进行一次转换,以便得到正确的显示。
下面这个例子将会提供一种转换的方法。
先来看代码:
/**********************************************************
* Copyright (C) 2009, DiaboLab.com, All Rights Reserved
* Name : Character Demo
* Author : DiaboLab.com
* EMail : guestsnowl@163.com
* Created Date : 01/15/2009
* Updated Date :
* Description : Flex应用中读取外部中文数据乱码的解决方案
**********************************************************/
–>
Application{
fontSize: 12pt;
}
private var utf8URL:String = "http://www.diabolab.com/demos/character/utf8.txt";
private var gbURL:String = "http://www.diabolab.com/demos/character/gb2312.txt";
//使用默认方式读取UTF-8的数据
private function loadUTF8():void
{
var request:URLRequest = new URLRequest(utf8URL);
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onLoadUTF8);
loader.load(request);
}
//直接将读取内容输出到文本框中,没有问题
private function onLoadUTF8(e:Event):void
{
ta.text += "默认读取UTF-8数据:/n"+e.currentTarget.data.toString()+"/n";
}
//使用默认方式读取GB的数据
private function loadGB():void
{
var request:URLRequest = new URLRequest(gbURL);
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onLoadGB);
loader.load(request);
}
//直接将读取内容输出到文本框中,会发现出现乱码
private function onLoadGB(e:Event):void
{
ta.text += "/n默认读取GB数据:/n"+e.currentTarget.data.toString()+"/n";
}
//使用URLStream取代URLLoader来读取GB数据
private function loadGBTrans():void
{
var request:URLRequest = new URLRequest(gbURL);
var loader:URLStream = new URLStream();
loader.addEventListener(Event.COMPLETE, onloadGBTrans);
loader.load(request);
}
//将读取的内容进行转换后输出,GB的数据被正确显示
private function onloadGBTrans(e:Event):void
{
var stream:URLStream = e.currentTarget as URLStream;
var result:String = stream.readMultiByte(stream.bytesAvailable, "gb2312");
ta.text += "/n转换读取GB数据:/n"+result+"/n";
}
]]>
uft8.txt是一个以UTF-8编码的中文文件。
gb2312.txt是一个以GB编码的中文文件。
这里只是使用txt文件作为例子,xml等文件格式是一样的。
使用URLLoader读取外部数据,在遇到中文非UTF-8编码的数据时出现乱码显示。
使用URLStream代替URLLoader后,在完成读取后使用readMultiByte()方法进行编码转换,就可以得到正确的显示。
上面的例子编译运行例子:http://ria.args.cn/uploads/2009/02/charactertest.swf
相关文章推荐
- Flex读取非UTF-8中文数据乱码问题的解决方案
- Flex读取非UTF-8中文数据乱码问题的解决方案
- fstream类读取UTF-8、Unicode和ANSI文本文档乱码问题的解决方案
- 工作总结11 压缩文件里面的中文文件名读取乱码问题解决方案
- PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)
- C# 从剪贴板中读取HTML中的中文字符出现乱码问题的解决方案
- 解决Java Web开发中Jsp存储读取MySQL数据中文乱码的问题
- 2015.10.22小结Mysql中文乱码问题完美解决方案(包括建库、导入数据、网页)
- Spring mvc 国际化支持已经UTF-8中文乱码问题的解决方案
- 解决方法:ASP读取数据库中的中文数据出现乱码的问题
- jQuery-Ajax提交数据中文乱码问题的解决方案
- php读取淘宝数据包csv文件 unicode ucs-2 utf-16 中文乱码问题解决
- Redis 中文入库成功,读取数据写入文件乱码问题
- Redis 中文入库成功,读取数据写入文件乱码问题
- 腾讯微博API 返回数据中文乱码的问题的解决方案
- SSH框架项目+jsp页面+MySQL数据库,数据中文乱码问题解决方案合集
- R语言:读取中文数据乱码的解决方案
- Python读取.xml文件(<?xml version="1.0" encoding="UTF-16"?>)中文乱码问题解决
- php获取数据库中数据生成json,中文乱码问题的解决方案
- fstream类读取UTF-8、Unicode和ANSI文本文档乱码问题的解决方案