Charset () { Charset charset; if (isDirectory()) { Charset configured = EncodingManager.getInstance().getEncoding(this, true); charset = configured == null ? Charset.defaultCharset() : configured; setCharset(charset); } else { FileType fileType = getFileType(); if (isCharsetSet()) { // file type detection may have cached the charset, no need to re-detect return super.getCharset(); } try { byte[] content = VfsUtilCore.loadBytes(this); if (isCharsetSet()) { // loadBytes() may have cached the charset (see VirtualFileImpl.contentsToByteArray(boolean)) return super.getCharset(); } charset = LoadTextUtil.detectCharsetAndSetBOM(this, content, fileType); } catch (IOException e) { return super.getCharset(); } } return charset; }