Android UTF-8乱码

最近在做一个App,主要是录制视频,要写入SRT字幕文件,并且还要分割视频同时分割字幕文件。

当我在使用UTF-8写入字幕文件的时候,在android和mac上播放都是正常的,但是在windows的暴风影音上播放字幕乱码了。

仔细搜索了下相关资料,才知道windows上的UTF-8是添加了BOM的,如果是未添加BOM的UTF-8,会因为无法判断编码而中文乱码。

我们只需要在写入文件前,写入BOM字节即可,如下所示:

final File srtFile = new File(filePath);
byte[] uft8bom={(byte)0xef,(byte)0xbb,(byte)0xbf};
FileOutputStream out = new FileOutputStream(srtFile);
out.write(uft8bom);
OutputStreamWriter isw = new OutputStreamWriter(out, "UTF-8");
BufferedWriter bw = new BufferedWriter(isw);

这样就可以正常在windows上识别了。

发表评论

电子邮件地址不会被公开。