SftpFile agencyFile = (SftpFile)agencyiter.next();
LOGGER.info(" agencyFile.getAbsolutePath() "+ agencyFile.getAbsolutePath());
输出:
agencyFile.getAbsolutePath() /Agency_Ja????n
在上面的代码中,我得到agencyFile.getAbsolutePath()
和???
这样的特殊字符。
我该如何避免它们?
我还尝试了以下代码,但得到了相同的输出。
byte[] ptext = agencyFile.getAbsolutePath().getBytes(ISO_8859_1);
String value = new String(ptext, UTF_8);
答案 0 :(得分:1)
只要您在java中,就不必担心字符串的字符编码。如果您的字符串跨越Java应用程序的边界到外部世界,您只需要打扰,如序列化字节数组(文件内容,套接字流等),称为I / O.
您的ptext
是否已包含值0x3F(?
的字节代码)?
如果是,那么在构造SftpFile实例时已经出现问题。调试该代码点并验证输入的内容是文件实例的路径(以及它来自何处)。
如果否:您的控制台或文件查看器无法打印出一个字符。配置Logger以写入UTF-8输出。然后每个常用的编辑器(如Notepad ++,UltraEdit等)都可以显示它。当然,您的操作系统也必须安装相应的字体。