InputStreamReader/OutputStreamWriter乱码问题解决
2016-07-07 11:14
681 查看
/*
*InputStreamReader参数charset要跟文件编码格式一致。 InputStreamReader读的时候才不会乱码。
*OutputStreamWriter参数charset设置编码例如UTF-8。在操作系统打开文件时候也要用相应编码打开才不会乱码。
*InputStreamReader:读操作时编码要与文件编码一致。OutputStreamWriter写操作时设置编码打开文件时也要以相同编码打开。
*/
public class Test{
/*记事本读写
*写字板编码转化为UTF-8的方式非常简单,用记事本打开文件,文件->另存为->在编码中选择uft-8保存就可以了。
*注意:666.txt和999.txt文件编码都要是UTF-8编码才能保证读写不会乱码。
*/
public static void main(String[] args) throws IOException {
Reader reader = new InputStreamReader(new FileInputStream(new File("e:/666.txt")),"UTF-8");
Writer writer = new OutputStreamWriter(new FileOutputStream(new File("e:/999.txt")),"UTF-8");
char[] buffer = new char[1024];
int len = 0;
while((len=reader.read(buffer))!= -1){
System.out.println(new String(buffer,0,len));
writer.write(buffer, 0, len);
}
writer.flush();
writer.close();
}
/*word读写*/
public static void main(String[] args) throws IOException {
Reader reader = new InputStreamReader(new FileInputStream(new File("e:/123.doc")),"utf-8");
Writer writer = new OutputStreamWriter(new FileOutputStream(new File("e:/456.doc")),"utf-8");
char[] buffer = new char[1024];
int len = 0;
while((len=reader.read(buffer))!= -1){
System.out.println(new String(buffer,0,len));
writer.write(new String(buffer,0,len));
}
writer.flush();
writer.close();
}
/*
*创建记事本999.txt
*OutputStreamWriter(FileOutputStream,charset)以UTF-8编码写出,正确写法。
*问题导致原因:999.txt默认以写字板方式打开就乱码,写字板打开打开的时候解码解错,以UTF-8打开问题解决或者换高级编辑器打开。
*/
public static void main(String[] args) throws IOException {
String file = "e:\\999.txt";
String charset = "UTF-8";
FileOutputStream outputStream = new FileOutputStream(file);
Writer writer = new OutputStreamWriter(outputStream, charset);
try {
writer.write("字符流写乱码。。。");
} finally {
writer.close();
}
}
}
*InputStreamReader参数charset要跟文件编码格式一致。 InputStreamReader读的时候才不会乱码。
*OutputStreamWriter参数charset设置编码例如UTF-8。在操作系统打开文件时候也要用相应编码打开才不会乱码。
*InputStreamReader:读操作时编码要与文件编码一致。OutputStreamWriter写操作时设置编码打开文件时也要以相同编码打开。
*/
public class Test{
/*记事本读写
*写字板编码转化为UTF-8的方式非常简单,用记事本打开文件,文件->另存为->在编码中选择uft-8保存就可以了。
*注意:666.txt和999.txt文件编码都要是UTF-8编码才能保证读写不会乱码。
*/
public static void main(String[] args) throws IOException {
Reader reader = new InputStreamReader(new FileInputStream(new File("e:/666.txt")),"UTF-8");
Writer writer = new OutputStreamWriter(new FileOutputStream(new File("e:/999.txt")),"UTF-8");
char[] buffer = new char[1024];
int len = 0;
while((len=reader.read(buffer))!= -1){
System.out.println(new String(buffer,0,len));
writer.write(buffer, 0, len);
}
writer.flush();
writer.close();
}
/*word读写*/
public static void main(String[] args) throws IOException {
Reader reader = new InputStreamReader(new FileInputStream(new File("e:/123.doc")),"utf-8");
Writer writer = new OutputStreamWriter(new FileOutputStream(new File("e:/456.doc")),"utf-8");
char[] buffer = new char[1024];
int len = 0;
while((len=reader.read(buffer))!= -1){
System.out.println(new String(buffer,0,len));
writer.write(new String(buffer,0,len));
}
writer.flush();
writer.close();
}
/*
*创建记事本999.txt
*OutputStreamWriter(FileOutputStream,charset)以UTF-8编码写出,正确写法。
*问题导致原因:999.txt默认以写字板方式打开就乱码,写字板打开打开的时候解码解错,以UTF-8打开问题解决或者换高级编辑器打开。
*/
public static void main(String[] args) throws IOException {
String file = "e:\\999.txt";
String charset = "UTF-8";
FileOutputStream outputStream = new FileOutputStream(file);
Writer writer = new OutputStreamWriter(outputStream, charset);
try {
writer.write("字符流写乱码。。。");
} finally {
writer.close();
}
}
}
相关文章推荐
- PHP第一站,反思复习之路
- WriteOutputStream
- PHP之:序列化和反序列化-serialize()和unserialize()
- yii-验证码
- yii框架中文件上传
- JHTP自测题_第七章_数组及动态数组(Array and ArrayList)
- 关于ThinkPhp中getField方法存在的问题
- PHP判断二级域名,301跳转
- Thinkphp的致命错误捕获流程
- 织梦后台发布文章提示“标题不能为空”
- thinkphp实现excel数据的导入导出
- 显试调用DLL------GetProcAddress的使用
- PHP:var_dump展示不全
- JHTP小结_第七章_数组及动态数组(Array and ArrayList)
- php自定义函数实现JS的escape的方法示例
- PHP中使用foreach和引用导致程序BUG及解决办法
- @在php中的作用
- PHP使用mysql与mysqli连接Mysql数据库用法示例
- php使用 _before_index() 来实现访问页面前,判断登录
- FTP,SFTP,FTPS区别