java 如何查看编码
查看文件编码
使用 java.nio.charset.Charset 类可以检测文件的编码。以下代码片段展示了如何读取文件并猜测其编码:
import java.io.*;
import java.nio.charset.Charset;
import org.apache.commons.io.IOUtils;
public String detectEncoding(File file) throws IOException {
InputStream inputStream = new FileInputStream(file);
byte[] data = IOUtils.toByteArray(inputStream);
String encoding = Charset.forName("UTF-8").newDecoder().decode(ByteBuffer.wrap(data)).toString();
return encoding;
}
获取系统默认编码
Java 虚拟机的默认编码可以通过以下方式获取:

String defaultEncoding = System.getProperty("file.encoding");
System.out.println("Default encoding: " + defaultEncoding);
检测字符串编码
对于已经加载到内存中的字符串,可以使用以下方法检测其编码:

public boolean isUTF8(String str) {
try {
byte[] bytes = str.getBytes("UTF-8");
String newStr = new String(bytes, "UTF-8");
return str.equals(newStr);
} catch (UnsupportedEncodingException e) {
return false;
}
}
使用第三方库
Apache Commons IO 和 ICU4J 库提供了更强大的编码检测功能:
// 使用 Apache Commons IO
InputStream input = new FileInputStream("file.txt");
Charset guessedCharset = CharsetDetector.detect(input);
// 使用 ICU4J
CharsetDetector detector = new CharsetDetector();
detector.setText(inputStream);
CharsetMatch match = detector.detect();
String encodingName = match.getName();
处理不同编码的文本
当需要处理不同编码的文本时,可以明确指定编码:
// 读取UTF-8文件
BufferedReader reader = new BufferedReader(
new InputStreamReader(
new FileInputStream("file.txt"), "UTF-8"));
// 写入GBK文件
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("output.txt"), "GBK"));






