Как я могу прочитать имя файла utf8 encodng в системе кодирования euc-kr, используя Java? - PullRequest
1 голос
/ 19 апреля 2019

Я использую систему кодирования euc-kr.Моя программа сделана на Java.Это читать имя файла.Но программа не может прочитать некоторые имена файлов.(некоторые файлы имеют кодировку utf8)

, поэтому я попробовал это

File dir = new File(dirPath);
File[] fileList = dir.listFiles(); //get files that file name is utf8 encoding
String cangedEncodingstr= new String(fileList[0].getName().getBytes("euc-kr"), "euc-kr"); // This is still an invalid string

.

Я думаю, что эта строка уже прервана во время вызова dir.listFiles()

File dir = new File(dirPath);
File[] fileList = dir.listFiles(); //get files that file name is utf8 encoding

fileList[0].getName(); // broken String
fileList[0].isFile(); //false
fileList[0].isDirectory(); //false

Строка в кодировке utf8 также ожидает, что isFile () будет верным.

Заранее спасибо за ваш ответ.: -)

1 Ответ

0 голосов
/ 19 апреля 2019

File.getName() возвращает String.Таким образом, вам не нужно больше ничего делать в Java.

A String в Java - это текстовый тип данных.Он содержит подсчитанную последовательность кодовых единиц UTF-16, то есть подсчитанную последовательность char.Каждая строковая функция написана на основе этого.Как правило, вам не нужно учитывать это, потому что большая часть обработки текста не зависит от этого.Несколько раз это происходит, когда вы рассчитываете или разбиваете на индексы, которые не получены из indexOf или подобных текстовых функций.

Это нравится многим языкам, таким как языки .NET, VB4 / 5/6/ A / Скрипт, JavaScript, SQL NVARCHAR или NCHAR.Другие имеют «строки», которые на самом деле являются просто байтовыми строками, которые могут быть текстом с одной из многих кодировок, таких как Lua, C, C ++,….Другие имеют разные типы строк, которые сохраняют разницу между строкой байтов и строкой символов, например Python.Другие имеют строки, которые включают атрибут для обозначения кодировки символов строки символов, например R.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...