Problem: When using Java programs to read and write txt files containing Chinese, the read or written content will often appear garbled. The reason is actually very simple, that is, the system encoding and program encoding adopt different encoding formats. Generally, if you don't modify it yourself, the encoding format used by Windows itself is gbk (and gbk and gb2312 are basically the same encoding method), and if Encode in IDE is not modified, the default is utf-8 encoding, which is why garbled code occurs. When a txt file (gbk) is manually created and written in OS, and it will be garbled by using the program to read (utf-8). To avoid possible Chinese garbled problems, it is best to explicitly specify the encoding format when writing and reading the file.
1. Write a file:
public static void writeFile(String fileName, String fileContent) { try { File f = new File(fileName); if (!f.exists()) { f.createNewFile(); } OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"gbk"); BufferedWriter writer=new BufferedWriter(write); writer.write(fileContent); writer.close(); } catch (Exception e) { e.printStackTrace(); } } 2. Read the file:
public static String readFile(String fileName) { String fileContent = ""; try { File f = new File(fileName); if(f.isFile()&&f.exists()) { InputStreamReader read = new InputStreamReader(new FileInputStream(f),"gbk"); BufferedReader reader=new BufferedReader(read); String line; while ((line = reader.readLine()) != null) { fileContent += line; } read.close(); } } catch (Exception e) { e.printStackTrace(); } return fileContent; }