如何使用Java在euc-kr编码系统中读取utf8 encodng的文件名?

时间:2019-04-19 07:17:47

标签: java encoding utf-8

我使用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 :(得分:0)

File.getName()返回一个String。因此,您无需使用Java做任何其他事情。

Java中的String是纯文本数据类型。它包含UTF-16代码单元的计数序列,即char的计数序列。每个字符串函数都是基于此编写的。通常,您不需要考虑这一点,因为许多文本处理并不依赖于此。几次是在对不是从indexOf或类似文本函数获得的索引进行计数或拆分时。

许多语言都喜欢这样,例如.NET语言,VB4 / 5/6 / A / Script,JavaScript,SQL NVARCHAR或NCHAR。其他人的“字符串”实际上只是字节字符串,可能是带有许多编码之一的文本,例如Lua,C,C ++等。其他的则具有不同类型的字符串,这些字符串在字节字符串和字符串之间保持差异,例如Python。其他人的字符串包含的属性指示字符串的字符编码,例如R。