我使用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 ()
为真。
预先感谢您的答复。 :-)
答案 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。