FTP: non-ASCII filenames corrupted to "?" — client never negotiates UTF-8 (OPTS UTF8 ON)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 68/100
Línea de trabajo
Rastrea la ruta de carga FTP utilizada por la configuración "Remote Web Site" del proyecto PHP, comenzando por el manejo del canal de control FTP descrito en el informe. Verifica el registro del protocolo y el resultado del servidor; después, confirma que la negociación UTF-8 conserva los nombres de directorios y archivos que no son ASCII sin informar de un éxito falso.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Apache NetBeans version
Apache NetBeans 31
What happened
When uploading files or folders whose names contain non-ASCII characters
(Cyrillic in my case) through a PHP project's "Remote Web Site (FTP, SFTP)"
run configuration, the names are corrupted before they reach the server.
Every non-ASCII character is replaced with a question mark.
The IDE's own FTP log shows the correct name in the outgoing command, while
the server echoes back question marks — one per character:
CWD производи
550 Can't change directory to ?????????: No such file or directory
The corruption therefore happens when the command is encoded for the control
channel, not when the name is read from disk. Names display correctly
everywhere inside the IDE.
The session contains no FEAT command and no OPTS UTF8 ON. The client never
negotiates UTF-8 (RFC 2640), so it falls back to a charset that cannot
represent these characters.
This is not only a display problem. The upload appears to succeed and no
error is shown in the IDE, but:
- MKD creates a directory literally named "?????????" on the server
- files are then uploaded into that directory under corrupted names
- the correctly named target directory is never found or used
The remote site is silently polluted with garbage directories and files
while the IDE reports success.
The server is Pure-FTPd, which supports UTF-8. WinSCP transfers the same
files to the same server with the names fully intact, so this is a
client-side issue.
Language / Project Type / NetBeans Component
No response
How to reproduce
Server requirement: any FTP server that supports UTF-8 (RFC 2640).
I used Pure-FTPd; the same behaviour should occur with vsftpd or ProFTPD
with UTF-8 enabled. Verifying with a second client (WinSCP, FileZilla with
"Force UTF-8") on the same server confirms the server side is fine.
- Create a PHP project (File > New Project > PHP > PHP Application).
- In Run Configuration, set "Run As" to "Remote Web Site (FTP, SFTP)".
- Click Manage, add a new FTP connection with the server credentials,
and confirm Test Connection succeeds. - In the local project's source folder, create a directory whose name
contains non-ASCII characters, e.g. производи - Inside that directory, create a PHP file whose name also contains
non-ASCII characters, e.g. весетео-офис-додатак.php - In the Projects window, right-click that single file and choose
"Upload..." from the context menu. - Open the Output window and select the tab named after the FTP
connection to see the protocol log. - Inspect the server contents with another FTP client or via the
hosting file manager.
Result:
- The log shows 550 responses where the server echoes ????????? back
- MKD creates a directory named "?????????"
- The file is stored inside it with its own non-ASCII characters replaced
by question marks - The IDE reports the upload as successful, with no warning or error
Expected:
- The directory and file appear on the server with their original names
Note that the IDE itself runs under UTF-8 (see System line above), and
Cyrillic names display correctly throughout the IDE. The Windows system
ACP is 1252, but that is not the cause: the filename is intact in the
IDE's own outgoing log line and is corrupted only when encoded for the
FTP control channel. Apache Commons Net defaults to ISO-8859-1 there
regardless of platform locale, so this should reproduce on any system.
Did this work correctly in an earlier version?
No / Don't know
Operating System
Microsoft Windows 11 Pro 10.0.26200 (build 26200) 64-bit
JDK
26.0.2+10
Apache NetBeans packaging
Community provided installer
Anything else
No response
Are you willing to submit a pull request?
No
- Lenguaje dominante
- Java
- Estrellas
- 3.1k
- Forks
- 939
- Merge medio
- 4 d 20 h
- PR fusionados (30 d)
- 25
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/netbeans
-
Contribution welcome kind:feature Platform
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/netbeans#9614 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
kind:bug LSP needs:triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/netbeans#9548 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Editor Java kind:feature needs:triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
The main Options dialog window has buttons with OK on the left instead of on the right on LinuxAbiertokind:bug needs:triage os:linux os:macos Platform UI
Dificultad 1/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Incorrect DTD for wstcref-FilesAbiertokind:bug needs:triage
Dificultad 1/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
Todos los issues de apache/netbeans
Issues similares
-
BoxAttachmentMulti parsing leaks IOException / ArrayIndexOutOfBoundsException on malformed content instead of IllegalArgumentExceptionPosiblemente ocupada @Kshot3000 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
ergoplatform/ergo-appkit#272 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
utopia-rise/godot-jvm#1004 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
spring-projects/spring-grpc#442 ·