Java(Android)写文件时指定编码格式的问题
2013-12-18 19:25
465 查看
在写入一个新文件时,有时需要明确指定新文件的编码格式,如果是使用OutputStreamWriter(OutputStream
out,
String enc)这个函数写入文件,
则要指定正确的encode string。对于要指定unicode编码格式,需要注意如下事情:
OutputStreamWriter osw = new OutputStreamWriter(fos, "unicode");
这样生成的文件编码格式是Unicode big endian,而不是期望中的Unicode little endian,这似乎有些变态阿~
要生成编码格式为Unicode little endian的文件,需要指定为“x-UTF-16LE-BOM”,即:
OutputStreamWriter osw = new OutputStreamWriter(fos, "x-UTF-16LE-BOM");
如果要写成
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-16LE");
得到的文件编码可能是"utf-8"的。
那么,此处“String enc“这个参数到底可以传入哪些字符串呢?已知的如下:
"UTF-8" : UTF-8编码
"x-UTF-16LE-BOM" : Unicode little endian编码
"Unicode": Unicode big endian编码
"GBK": ANSI编码
如果哪位知道的更详细,或者知道去哪个文档中找此函数的参数值还请不吝赐教
还有一种方法好像更直接(手动写入对应的BOM信息):
OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(new File("myTestWriteFile.txt")), "UTF-16LE");
fos.write(0xFEFF);
fos.write("test 测试");
fos.flush();
fos.close();
写入文件的代码片段(参考):
try {
FileOutputStream fos = new FileOutputStream(fileName);
OutputStreamWriter osw = new OutputStreamWriter(fos, "unicode");
BufferedWriter bw = new BufferedWriter(osw);
bw.write(...);
bw.flush();
bw.close();
osw.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
out,
String enc)这个函数写入文件,
则要指定正确的encode string。对于要指定unicode编码格式,需要注意如下事情:
OutputStreamWriter osw = new OutputStreamWriter(fos, "unicode");
这样生成的文件编码格式是Unicode big endian,而不是期望中的Unicode little endian,这似乎有些变态阿~
要生成编码格式为Unicode little endian的文件,需要指定为“x-UTF-16LE-BOM”,即:
OutputStreamWriter osw = new OutputStreamWriter(fos, "x-UTF-16LE-BOM");
如果要写成
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-16LE");
得到的文件编码可能是"utf-8"的。
那么,此处“String enc“这个参数到底可以传入哪些字符串呢?已知的如下:
"UTF-8" : UTF-8编码
"x-UTF-16LE-BOM" : Unicode little endian编码
"Unicode": Unicode big endian编码
"GBK": ANSI编码
如果哪位知道的更详细,或者知道去哪个文档中找此函数的参数值还请不吝赐教
还有一种方法好像更直接(手动写入对应的BOM信息):
OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(new File("myTestWriteFile.txt")), "UTF-16LE");
fos.write(0xFEFF);
fos.write("test 测试");
fos.flush();
fos.close();
写入文件的代码片段(参考):
try {
FileOutputStream fos = new FileOutputStream(fileName);
OutputStreamWriter osw = new OutputStreamWriter(fos, "unicode");
BufferedWriter bw = new BufferedWriter(osw);
bw.write(...);
bw.flush();
bw.close();
osw.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
相关文章推荐
- java文件读写操作指定编码格式
- 【string编码格式】Android读取txt文件乱码问题
- android读取文件时乱码的问题,以及eclipse中java编码查看方式
- java文件读写操作指定编码格式
- java文件读写操作指定编码格式[转]
- java文件读写操作指定编码格式
- java文件读写操作指定编码格式
- java文件读写操作指定编码格式[转]
- java文件读写操作指定编码格式
- Java指定编码格式读写文件
- java文件读写操作指定编码格式
- java IO 指定输出文件的编码格式
- Java文件流 编码问题 - 读取文件时指定字符编码
- 一上午搞java编码问题,写了一个将批量文件编码转为UTF-8的小程序(有BUG-.-!)
- Java读写文件的编码问题
- Windows PowerShell 输出文件编码格式问题
- 介绍Java如何获得文件编码格式
- 使用java的输出流写一个json格式的文件在指定目录下
- 关于ios 和 android 录音(语音)对聊文件格式问题
- JAVA从UTF-8编码文件读取字符串时,前边有问号的问题