BufferedReader 输出乱码
时间: 2023-08-18 13:13:35 浏览: 90
你在使用 BufferedReader 读取文本时遇到了乱码问题,对吧?这通常是由于文本编码不一致导致的。可以尝试以下几种方法解决这个问题:
1. 指定正确的字符编码:在创建 BufferedReader 对象时,使用 InputStreamReader 并指定正确的字符编码。例如,如果文本是以 UTF-8 编码保存的,可以这样创建 BufferedReader 对象:
```
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
```
2. 使用适当的字符编码解码字符串:如果读取到的文本中包含非 ASCII 字符,需要使用适当的字符编码将字节转换为字符串。可以使用 `new String(bytes, charset)` 方法来指定正确的字符编码。例如:
```
String text = new String(bytes, "UTF-8");
```
3. 检查文件本身的编码:确保你的文本文件保存时使用了正确的编码格式。可以尝试使用其他编辑器打开文件并另存为正确的编码格式。
希望这些方法能帮助你解决问题!如果还有其他疑问,请随时提问。
相关问题
hadoop输出文件乱码
Hadoop输出文件乱码可能是因为编码不一致导致的。可以尝试在输出时使用UTF-8编码,例如:
```
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.setOutputFormatClass(TextOutputFormat.class);
job.getConfiguration().set("mapreduce.output.textoutputformat.separator", ",");
job.getConfiguration().set("mapreduce.output.fileoutputformat.compress.type", "BLOCK");
job.getConfiguration().set("mapreduce.output.fileoutputformat.compress", "false");
job.getConfiguration().set("mapreduce.output.fileoutputformat.compress.codec", "org.apache.hadoop.io.compress.GzipCodec");
job.getConfiguration().set("mapreduce.map.output.compress.codec", "org.apache.hadoop.io.compress.GzipCodec");
job.getConfiguration().set("mapreduce.task.timeout", "1800000");
job.getConfiguration().set("mapreduce.task.io.sort.mb", "2048");
job.getConfiguration().set("mapreduce.task.io.sort.factor", "30");
job.getConfiguration().set("mapreduce.job.reduces", "30");
job.getConfiguration().set("mapreduce.reduce.shuffle.input.buffer.percent", "0.2");
job.getConfiguration().set("mapreduce.reduce.shuffle.memory.limit.percent", "0.5");
job.getConfiguration().set("mapreduce.reduce.input.limit", "0");
job.getConfiguration().set("mapreduce.reduce.shuffle.merge.percent", "0.7");
job.getConfiguration().set("mapreduce.reduce.shuffle.parallelcopies", "30");
job.getConfiguration().set("mapreduce.reduce.input.buffer.percent", "0.2");
job.getConfiguration().set("mapreduce.reduce.memory.mb", "2048");
job.getConfiguration().set("mapreduce.reduce.java.opts", "-Xmx1638m");
job.getConfiguration().set("mapreduce.reduce.shuffle.memory.limit.mb", "1024");
job.getConfiguration().set("mapreduce.reduce.shuffle.input.buffer.percent", "0.2");
job.getConfiguration().set("mapreduce.output.fileoutputformat.encoding", "UTF-8");
FileOutputFormat.setOutputPath(job, outputPath);
```
如果还是出现乱码,可以尝试在读取时指定编码方式,例如:
```
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
```
java文件输入输出不乱码
确保在读取和写入文件时使用正确的编码格式。在Java中,常用的编码格式有UTF-8、GBK等。如果读取和写入文件时使用的编码格式不一致,就会出现乱码的情况。可以通过指定编码格式的方式来解决这个问题。例如,在读取文件时可以使用如下代码:
```
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
```
在写入文件时可以使用如下代码:
```
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
```
其中,file为文件对象,"UTF-8"为编码格式。通过指定编码格式,可以确保文件的输入输出不会出现乱码。