getFileNames corrupts file names that use "special chars"

Bug #1209515 reported by Phill on 2013-08-08
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenLP
Status tracked in Trunk
2.0
Fix Released
Medium
Phill
Trunk
Fix Released
Medium
Phill

Bug Description

This is a little bit of a strange one. I have written a little script which demonstrates this (I'll include it when I get home).

Here's the issue:

Use QFileDialog.getFileNames() to select a single file with a special char in its name (a '#' will do it) and it returns the file name & path correctly. Ie selecting a file called "#123.xml" returns a list with one item "#123.xml"

However, use QFileDialog.getFileNames() to select multiple files with at lease one file with special char in its name (a '#' will do it) and it returns the file name & path incorrectly. Ie selecting a file called "#123.xml" and a file called "abc.xml" returns a list with two items "%23123.xml" & "abc.xml" (Note the # has been changed in to a %23. Possible url encoding?)

When we come to open the file, Python cannot find the file "%23123.xml" because it does not exist.

This seams to be a Qt bug (I've done a few searches, but found nothing) but we could at least make some effort to see if the file actually exists before trying to open it!

Reported here: http://support.openlp.org/issues/2056
and here: http://support.openlp.org/issues/1964

Related branches

Phill (phill-ridout) on 2013-08-08
Changed in openlp:
status: New → Confirmed
importance: Undecided → Medium
tags: added: support-system
Phill (phill-ridout) wrote :

See: http://pastebin.com/QcmkNcSk for example code

Raoul Snyman (raoul-snyman) wrote :

I would suggest we try to "decode" each of the files.

mahfiaz (mahfiaz) wrote :

Philip, it seems to work now when using the given test script:

[PyQt4.QtCore.QString(u'/home/user/#123.txt'), PyQt4.QtCore.QString(u'/home/user/diff')]

Phill (phill-ridout) wrote :

mahfiaz,
Thanks for that, but could you test the paste bin script linked to in my email (https://lists.openlp.io/pipermail/openlp-dev/2017-June/000273.html) please? Its PyQt5!

Also which platform are you on?

I just tested on Fedora 25 (gnome shell) with python 3 and PyQt5 installed with the package manager and also on OS X El Capitan with python 3 and PyQt5 installed with macPorts. On both systems it works just fine.

Output:
`[['/home/jasperge/openlp_bug/#1234.xml', '/home/jasperge/openlp_bug/abc.xml'], 'All Files (*)']`

David Wales (daviewales) wrote :

Tested on OS X El Capitan with python 3, and PyQt 5 installed using brew.

Works perfectly.

I've tested on Ubuntu 17.04 (Unity) and Windows 7.

Anybody with KDE, just to round up testing?

On Thu, 15 Jun 2017, 02:36 David Wales, <email address hidden> wrote:

> Tested on OS X El Capitan with python 3, and PyQt 5 installed using
> brew.
>
> Works perfectly.
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1209515
>
> Title:
> getFileNames corrupts file names that use "special chars"
>
> Status in OpenLP:
> Fix Released
> Status in OpenLP 2.0 series:
> Fix Released
> Status in OpenLP trunk series:
> Fix Released
>
> Bug description:
> This is a little bit of a strange one. I have written a little script
> which demonstrates this (I'll include it when I get home).
>
>
> Here's the issue:
>
> Use QFileDialog.getFileNames() to select a single file with a special
> char in its name (a '#' will do it) and it returns the file name &
> path correctly. Ie selecting a file called "#123.xml" returns a list
> with one item "#123.xml"
>
> However, use QFileDialog.getFileNames() to select multiple files with
> at lease one file with special char in its name (a '#' will do it) and
> it returns the file name & path incorrectly. Ie selecting a file
> called "#123.xml" and a file called "abc.xml" returns a list with two
> items "%23123.xml" & "abc.xml" (Note the # has been changed in to a
> %23. Possible url encoding?)
>
> When we come to open the file, Python cannot find the file
> "%23123.xml" because it does not exist.
>
> This seams to be a Qt bug (I've done a few searches, but found
> nothing) but we could at least make some effort to see if the file
> actually exists before trying to open it!
>
> Reported here: http://support.openlp.org/issues/2056
> and here: http://support.openlp.org/issues/1964
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/openlp/+bug/1209515/+subscriptions
>

Raoul Snyman (raoul-snyman) wrote :

I tested it on KDE, works perfectly.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers