Skip to content

[Bug]: Problems with filenames containing special characters % and # #57353

@egabosh

Description

@egabosh

⚠️ This issue respects the following points: ⚠️

Bug description

Synchronization of files with % or # in their names works, e.g., from the Linux desktop client.
However, the file cannot then be synchronized to another server or accessed via the Nextcloud web interface.
The error message in the web interface is:
“The requested file is not available.”
In the Linux file system, it is available as normal on both the client and the server.

Steps to reproduce

  1. Create files in the Nexcloud Sync directory on the Client for example some testfiles:
client # cd Nextcloud
client # mkdir test
client # cd test
client # echo x >'TEST%PERCENT'
client # echo x >'TEST#HASH'
client # echo x >'TESTTEST'
  1. Nextcloud Client syncs them as expected to the Server
  2. Can't access the files 'TEST%PERCENT' and 'TEST#HASH' on the Nextcloud interface on the server. Only file TESTTEST works.
  3. Files in a shell on the Server is available:
server # cat data/username/files/test/TEST#HASH 
x
server # cat data/username/files/test/TEST%PERCENT 
x
server # cat data/username/files/test/TESTTEST 
x

Expected behavior

Files 'TEST%PERCENT' and 'TEST#HASH' should be available like TESTTEST

Nextcloud Server version

31

Operating system

Debian/Ubuntu

PHP engine version

PHP 8.3

Web server

Apache (supported)

Database engine version

MariaDB

Is this bug present after an update or on a fresh install?

Fresh Nextcloud Server install

Are you using the Nextcloud Server Encryption module?

Encryption is Disabled

What user-backends are you using?

  • Default user-backend (database)
  • LDAP/ Active Directory
  • SSO - SAML
  • Other

Configuration report

{
    "system": {
        "htaccess.RewriteBase": "\/",
        "memcache.local": "\\OC\\Memcache\\APCu",
        "apps_paths": [
            {
                "path": "\/var\/www\/html\/apps",
                "url": "\/apps",
                "writable": false
            },
            {
                "path": "\/var\/www\/html\/custom_apps",
                "url": "\/custom_apps",
                "writable": true
            }
        ],
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "password": "***REMOVED SENSITIVE VALUE***",
            "port": 6379
        },
        "mail_smtpmode": "smtp",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "465",
        "mail_smtptimeout": 30,
        "mail_smtpsecure": "ssl",
        "mail_smtpauth": true,
        "mail_smtpauthtype": "PLAIN",
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "loglevel": 1,
        "logtimezone": "Europe\/Berlin",
        "log_rotate_size": 10485760,
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "localhost",
            "***REMOVED SENSITIVE VALUE***"
        ],
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "31.0.12.3",
        "overwrite.cli.url": "https:\/\/localhost",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "twofactor_enforced": "false",
        "twofactor_enforced_groups": [],
        "twofactor_enforced_excluded_groups": [],
        "maintenance": false,
        "mail_sendmailmode": "smtp",
        "default_phone_region": "DE",
        "session_lifetime": 28800,
        "session_keepalive": true,
        "overwriteprotocol": "https",
        "skeletondirectory": "",
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "theme": "",
        "app_install_overwrite": [
            "news"
        ]
    }
}

List of activated Apps

Enabled:
  - activity: 4.0.0
  - admin_audit: 1.21.0
  - app_api: 5.0.2
  - bookmarks: 15.2.1
  - bruteforcesettings: 4.0.0
  - calendar: 5.5.11
  - circles: 31.0.0
  - cloud_federation_api: 1.14.0
  - comments: 1.21.0
  - contacts: 7.3.9
  - contactsinteraction: 1.12.1
  - dav: 1.33.0
  - federatedfilesharing: 1.21.0
  - federation: 1.21.0
  - files: 2.3.1
  - files_downloadlimit: 4.0.0
  - files_external: 1.23.0
  - files_pdfviewer: 4.0.0
  - files_reminders: 1.4.0
  - files_sharing: 1.23.2
  - files_trashbin: 1.21.0
  - files_versions: 1.24.0
  - firstrunwizard: 4.0.0
  - gpoddersync: 3.13.3
  - logreader: 4.0.0
  - lookup_server_connector: 1.19.0
  - news: 27.2.0
  - notes: 4.12.4
  - notifications: 4.0.0
  - oauth2: 1.19.1
  - password_policy: 3.0.0
  - passwords: 2025.12.11
  - phonetrack: 0.9.1
  - photos: 4.0.0
  - privacy: 3.0.0
  - profile: 1.0.0
  - provisioning_api: 1.21.0
  - recommendations: 4.0.0
  - related_resources: 2.0.0
  - settings: 1.14.0
  - sharebymail: 1.21.0
  - survey_client: 3.0.0
  - systemtags: 1.21.1
  - tasks: 0.17.1
  - text: 5.0.2
  - theming: 2.6.1
  - twofactor_backupcodes: 1.20.0
  - twofactor_totp: 13.0.0-dev.0
  - uppush: 2.3.1
  - user_status: 1.11.0
  - viewer: 4.0.0
  - webhook_listeners: 1.2.0
  - workflowengine: 2.13.0
Disabled:
  - dashboard: 7.11.0 (installed 7.4.0)
  - encryption: 2.19.0
  - files_rightclick: 0.15.1 (installed 1.6.0)
  - impersonate: 2.0.0 (installed 2.0.0)
  - maps: 1.6.0 (installed 1.6.0)
  - nextcloud_announcements: 3.0.0 (installed 1.13.0)
  - serverinfo: 3.0.0 (installed 1.14.0)
  - spreed: 21.1.7 (installed 21.1.7)
  - support: 3.0.0 (installed 1.7.0)
  - suspicious_login: 9.0.1
  - twofactor_nextcloud_notification: 5.0.0
  - updatenotification: 1.21.0 (installed 1.14.0)
  - user_ldap: 1.22.0
  - weather_status: 1.11.0 (installed 1.3.0)

Nextcloud Signing status

No errors have been found.

Nextcloud Logs

Nothing in nextcloud.log

Additional info

Access from Android Client to the files with # or % does not work too.
Filesystem on server: ext4

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions