Let the copyfilepath.py to support chinese file path name.
DL Neil
PythonList at DancesWithMice.info
Fri Aug 23 16:09:01 EDT 2019
On 24/08/19 2:36 AM, Hongyi Zhao wrote:
> Hi,
>
> The following is a gedit plugin which provides a way to copy the current
> file path to the clipboard.
>
> https://github.com/willianveiga/gedit-copy-file-path/blob/master/
> copyfilepath.py
>
> But, I try and find that it doesn't support the path/file names including
> chinese characters.
>
> In this case, it will give messy code like this:
>
> dnsmasq/archive/dnsmasq-全功�
>
> How to fix it?
Does "it will give" mean:
- this is what is returned from the gtk clipboard, or
- this is the fileNM which appears in an errmsg?
Please copy-paste the calling code, source data fileNM, and resulting
errmsgs/output.
NB I only took the quickest look at the code.
A first thought is that this code may have originated in Python2 days.
In which case there may be pertinent differences between how things were
done 'then' (ASCII byte-characters) and how they are done now (Unicode
characters). Also, in the Python3 world, many file/pathNM libraries will
respond (slightly differently) depending upon whether their input is in
(Unicode) characters or bytes.
Is it worth experimenting by throwing some test-data at the object?
- fileNM as Unicode string
- fileNM as bytes
- fileNM in (narrow) ASCII
- fileNM including Kanji (or...)
How does it react differently.
A second issue is that whilst Python negotiated a clear-cut difference
between Unicode and 'the ?bad, old days'; OpSys and file systems do/did
not! (Hence the first question, above) I have run into trouble with
(European language) non-ASCII characters originating on a MSFT platform
not being properly accepted by 'modern' Python file/path libraries
(under Linux - although the OpSys likely doesn't matter). The fileNMs
become mangled during the decode() step - to the point of no-repair.
In debugging this issue, recommend separating what the clip-board is/not
handling, and what the file system might be mangling, ie locate the
ACTUAL point of error and separate that from later consequences!
--
Regards =dn
More information about the Python-list
mailing list