在自己一个Air桌面应用中需要用户在桌面自定义文件夹并写入相应的文件,文件名由用户自己任意取。当时自己就做了一个输入框让用户输入文件名,然后由程序将其写入系统。自己的系统是中文简体Windows系统,而自己的自行测试时一直用的是英文或中文简体来取文件夹或文件名。这样起名后在由Air重新读取这些文件夹或者文件的名字的时候,没有出现错误或什么乱码的情况。但是没想到的是别人的测试的时候,有人用中文繁体给文件夹或文件起名字,这下问题出来了,我的Air程序获取的繁体文件或文件夹名全为乱码。
我大体认为是系统默认的中文简体和输入进来的文字的编码存在冲突,从而导致了重新的入以后,因为as解码不正确而导致了乱码。
这个问题必须得以解决不然就丢人了。
我先说说我写入或获取文件时文件名的获取方式,举例如下:
现在,如果这个"测试.txt"文件的名字"测试"是繁体的时候,我读出来的就是乱码.我看了下乱码,这乱码不是别人,而是熟人,它们是URI编码。我大体认为是系统默认的中文简体和输入进来的文字的编码存在冲突,从而导致了重新的入以后,因为as解码不正确而导致了乱码。
这个问题必须得以解决不然就丢人了。
我先说说我写入或获取文件时文件名的获取方式,举例如下:
//假定是获取桌面上的一个文件名
var tempFile:File = File.desktopDirectory.resolvePath("mtFiles/测试.txt");
//通过url属性获取文件名
var fileURL:String = tempFile.url;
var tempFile:File = File.desktopDirectory.resolvePath("mtFiles/测试.txt");
//通过url属性获取文件名
var fileURL:String = tempFile.url;
这下好办了,我只要解析这个URI编码就能得到正常的文件名了,不管文件名是否是中文简体的还是其他什么的。
那么怎么实现这个解码呢,其实真是很方便,只要别忘了用上就好了。
在*包中有URI解码组建:
decodeURIComponent | () |
//假定是获取桌面上的一个文件名
var tempFile:File = File.desktopDirectory.resolvePath("mtFiles/测试.txt");
//通过url属性获取文件名
var fileURL:String = decodeURIComponent(tempFile.url);
这样处理后,得到的fileURL中的文件或文件夹名无论是繁体或简体都能正常显示。var tempFile:File = File.desktopDirectory.resolvePath("mtFiles/测试.txt");
//通过url属性获取文件名
var fileURL:String = decodeURIComponent(tempFile.url);