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);
最佳答案
只要您使用 java,您就不必担心字符串的字符编码。您只需要担心您的字符串是否跨越 Java 应用程序的边界到达外部世界,作为序列化字节数组(文件内容、套接字流等),称为 I/O。
您的ptext
是否已包含值0x3F(这是的字节码?
)?
如果是,那么您的问题在构造 SftpFile 实例时已经出现。调试该代码点并验证输入的文件实例路径(及其来源)。
如果否:存在您的控制台或文件查看器无法打印的字符。配置您的记录器以写入 UTF-8 输出。然后每个常用的编辑器(如 Notepad++、UltraEdit 等)都可以显示它。当然,您的操作系统也必须安装相应的字体。
关于java - Java中如何转换字符集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50413069/