上传包含拉丁字符的文件
Upload File containing latin characters
我正在使用最新的 Apache Commons Net 来利用 FTP 功能。
我的目标是上传 CSV 文件(基于 ;),其中可能包含拉丁字符,例如 ñ、á 或 Ú。问题是,当我将它们上传到 FTP 服务器时,这些字符会转换为另一个字符。
下一行:
12345678A;IÑIGO;PÉREZ;JIMÉNEZ;X
变成这样:
12345678A;IÑIGO;PÉREZ;JIMÉNEZ;X
我的代码看起来像这样:
// pFile is passed as parameter to the current method
InputStream is = new FileInputStream(pFile);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.setControlEncoding("UTF-8");
if (ftp.storeFile("some\path", is)) {
is.close();
...
}
我花了几个小时来寻找解决方案(我认为 setFileType() and/or setControlEncoding() 会起作用),但是不行...
我尝试打印到标准输出(屏幕,带记录器和 System.out),我意识到是 InputStream 不读取这些字符。执行以下代码以正确的方式打印提到的字符:
InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8);
BufferedReader in = new BufferedReader(isr);
String line = null;
while((line = in.readLine()) != null){
System.out.print(line);
logger.debug(line);
}
in.close();
isr.close();
但是如何告诉 FTP 客户端或 storeFile() 使用 UTF-8?
谢谢大家
抱歉,我已经找到答案了。
当我告诉你我看到一些字符变形时
12345678A;IÑIGO;PÉREZ;JIMÉNEZ;X
我的意思是在 FTP 客户端应用程序(我使用 WinSCP)上可以看到这些字符。问题是默认字符编码是 selected 而不是 UTF-8-
现在,在意识到这一点之后,我select正确的编码(UTF-8),并且文本看起来格式正确。
感谢您的帮助。
我正在使用最新的 Apache Commons Net 来利用 FTP 功能。
我的目标是上传 CSV 文件(基于 ;),其中可能包含拉丁字符,例如 ñ、á 或 Ú。问题是,当我将它们上传到 FTP 服务器时,这些字符会转换为另一个字符。
下一行:
12345678A;IÑIGO;PÉREZ;JIMÉNEZ;X
变成这样:
12345678A;IÑIGO;PÉREZ;JIMÉNEZ;X
我的代码看起来像这样:
// pFile is passed as parameter to the current method
InputStream is = new FileInputStream(pFile);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.setControlEncoding("UTF-8");
if (ftp.storeFile("some\path", is)) {
is.close();
...
}
我花了几个小时来寻找解决方案(我认为 setFileType() and/or setControlEncoding() 会起作用),但是不行...
我尝试打印到标准输出(屏幕,带记录器和 System.out),我意识到是 InputStream 不读取这些字符。执行以下代码以正确的方式打印提到的字符:
InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8);
BufferedReader in = new BufferedReader(isr);
String line = null;
while((line = in.readLine()) != null){
System.out.print(line);
logger.debug(line);
}
in.close();
isr.close();
但是如何告诉 FTP 客户端或 storeFile() 使用 UTF-8?
谢谢大家
抱歉,我已经找到答案了。
当我告诉你我看到一些字符变形时
12345678A;IÑIGO;PÉREZ;JIMÉNEZ;X
我的意思是在 FTP 客户端应用程序(我使用 WinSCP)上可以看到这些字符。问题是默认字符编码是 selected 而不是 UTF-8-
现在,在意识到这一点之后,我select正确的编码(UTF-8),并且文本看起来格式正确。
感谢您的帮助。