Java tutorial
//package com.java2s; //License from project: Open Source License import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.nio.charset.Charset; public class Main { /** Cached copy of system encoding string */ private static String _systemEncoding = null; /** * @return true if system uses UTF-8 by default */ public static boolean isSystemUtf8() { String systemEncoding = getSystemEncoding(); return (systemEncoding != null && systemEncoding.toUpperCase().equals("UTF-8")); } /** * @return name of the system's character encoding */ public static String getSystemEncoding() { if (_systemEncoding == null) { _systemEncoding = determineSystemEncoding(); } return _systemEncoding; } /** * Use a temporary file to obtain the name of the default system encoding * @return name of default system encoding, or null if write failed */ private static String determineSystemEncoding() { File tempFile = null; String encoding = null; try { tempFile = File.createTempFile("gpsprune", null); OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(tempFile)); encoding = getEncoding(writer); writer.close(); } catch (IOException e) { } // value stays null // Delete temp file if (tempFile != null && tempFile.exists()) { if (!tempFile.delete()) { System.err.println("Cannot delete temp file: " + tempFile.getAbsolutePath()); } } // If writing failed (eg permissions) then just ask system for default if (encoding == null) encoding = Charset.defaultCharset().name(); return encoding; } /** * Get the default system encoding using a writer * @param inWriter writer object * @return string defining encoding */ public static String getEncoding(OutputStreamWriter inWriter) { String encoding = inWriter.getEncoding(); try { encoding = Charset.forName(encoding).name(); } catch (Exception e) { } // ignore failure to find encoding return encoding; } }