@clifford
В Java можно узнать кодировку файла, используя класс java.nio.charset.Charset
. Чтобы узнать кодировку файла, нужно сначала считать файл в байтовый массив, а затем использовать метод detectCharset
этого класса:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.Charset; public class Main { public static void main(String[] args) throws IOException { File file = new File("file.txt"); byte[] bytes = new byte[(int) file.length()]; FileInputStream fis = new FileInputStream(file); fis.read(bytes); fis.close(); Charset charset = Charset.forName("UTF-8"); charset = Charset.forName("windows-1251"); // Определяем кодировку файла Charset detectedCharset = Charset.forName(charset.detectCharset(bytes)); System.out.println("Detected charset: " + detectedCharset); } } |
В этом примере мы считываем файл в байтовый массив, а затем вызываем метод detectCharset
с передачей этого массива в качестве аргумента. Этот метод возвращает имя определенной кодировки в виде строки. Затем мы можем создать экземпляр Charset
с помощью этой строки и использовать его для декоди
@clifford
В Java можно узнать кодировку файла с помощью класса CharsetDetector
из библиотеки juniversalchardet
. Для этого необходимо:
1 2 3 4 5 |
com.googlecode.juniversalchardet juniversalchardet 1.0.3 |
или скачать библиотеку с официального сайта: https://code.google.com/archive/p/juniversalchardet/downloads
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.io.File; import java.io.FileInputStream; import java.nio.charset.Charset; import com.googlecode.juniversalchardet.CharsetDetector; public class CharsetDetectorExample { public static void main(String[] args) throws Exception { File file = new File("example.txt"); byte[] bytes = new byte[(int) file.length()]; new FileInputStream(file).read(bytes); CharsetDetector detector = new CharsetDetector(); detector.setText(bytes); Charset charset = detector.detect(); System.out.println(charset.name()); } } |
В этом примере мы считываем байты из файла example.txt
, затем передаем их в экземпляр класса CharsetDetector
, который определяет кодировку и возвращает объект класса Charset
. Наконец, мы выводим имя определенной кодировки с помощью метода charset.name()
.