AIX 5.3 系统回归?文件名中的特殊字符

问题描述 投票:0回答:1

我试图使用 Java 程序在 AIX 5.3 系统上获取包含特殊字符的文件名,但它用问号替换了特殊字符。这是在客户端环境中。但是当我在开发环境中使用相同的程序时,我无法重现该问题。

我尝试了 vfs2 和 jsch 库,但它们都遇到了同样的问题。这是我尝试过的示例代码-

package com.example.ftp;

import com.jcraft.jsch.*;
import java.util.Vector;

public class Elmer1 {
    public static void main(String[] args) {
        String host = "aix";
        String username = "user";
        int port = 22;
        String password = "pass";  // Replace with your password
        String remoteDirectory = "/disk1/users/usr1";  // Replace with the remote folder path

        JSch jsch = new JSch();
        Session session = null;

        try {
            // Create the session object
            session = jsch.getSession(username, host, port);
            session.setPassword(password);  // Set password

            // Create properties for key exchange, ciphers, and host key algorithms
            java.util.Properties config = new java.util.Properties();

            session.setConfig(config);

            // Disable strict host key checking for testing purposes (optional)
            session.setConfig("StrictHostKeyChecking", "no");

            // Connect to the session
            session.connect();

            // Open an SFTP channel
            ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
            channelSftp.connect();

            // List files and directories in the remote directory
            Vector<ChannelSftp.LsEntry> list = channelSftp.ls(remoteDirectory);

            System.out.println("Contents of " + remoteDirectory + ":");
            for (ChannelSftp.LsEntry entry : list) {
                if (entry.getAttrs().isDir()) {
                    // It's a directory
                    System.out.println("[DIR]  " + entry.getFilename());
                } else {
                    // It's a file
                    System.out.println("[FILE] " + entry.getFilename());
                }
            }

            // Disconnect when done
            channelSftp.disconnect();
            session.disconnect();

        } catch (JSchException | SftpException e) {
            e.printStackTrace();
        }
    }
}

开发环境中的输出-

Contents of /disk1/users/usr1:
[DIR]  .
[DIR]  ..
[FILE] 99-4±±±±0A02-|PART±ASSEMBLY,±SAMPLE±IV-X.model

不确定在客户环境中可能导致此问题的原因。感谢任何尝试解决此问题的指针/输入。

java encoding file-handling aix
1个回答
0
投票
  1. 在生产主机上安装与开发主机上安装的相同的本地化包,例如

     bos.loc.com.utf     Common Locale Support - UTF-8
     bos.loc.iso.en_US   Base System Locale ISO Code Set - U.S. English
     bos.loc.utf.EN_US   Base System Locale UTF Code Set - U. S. English
    
  2. 确保环境变量

    LC_CTYPE
    在生产主机上的设置方式与在开发主机上的设置方式相同。 (Java属性
    file.encoding
    sun.jnu.encoding
    是基于
    LC_CTYPE
    设置的)

© www.soinside.com 2019 - 2024. All rights reserved.