文章目录
- 1.eclipse所有修改编码的地方
- 2.io读取文件乱码问题
- 1.读写统一
- 2.转换字符编码:
- 3.http请求返回乱码
1.eclipse所有修改编码的地方
2.io读取文件乱码问题
1.读写统一
如果文件是以UTF-8编码保存的,那么在读取文件时也应使用UTF-8编码。
2.转换字符编码:
不能直接转码,但是可以统一编码读取数据,再转码写入文件
import java.io.*;
import java.nio.charset.StandardCharsets;public class ConvertEncoding {public static void main(String[] args) throws IOException {String inputFile = "input.txt"; // 输入文件路径String outputFile = "output.txt"; // 输出文件路径String originalEncoding = "ISO-8859-1"; // 原始编码String targetEncoding = "UTF-8"; // 目标编码// 读取原始文件byte[] fileContent = Files.readAllBytes(new File(inputFile).toPath());// 使用原始编码读取内容String content = new String(fileContent, originalEncoding);// 使用目标编码写入新文件Files.write(new File(outputFile).toPath(), content.getBytes(targetEncoding));}
}
3.http请求返回乱码
- 设置请求头,
- 设置读取编码
- 还不行,就看对方怎么保存的编码,设置一致
public static String sendPost(String url, String param) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);//conn.setReadTimeout(1000*5);conn.setConnectTimeout(1001*8);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {e.printStackTrace();result = e.getMessage();}