[Development] Deprecating QFile::encodeName/decodeName

lars.knoll at nokia.com lars.knoll at nokia.com
Mon May 14 14:26:53 CEST 2012


Full support from my side for it.

Cheers,
Lars

On 5/14/12 1:11 PM, "ext Thiago Macieira" <thiago.macieira at intel.com>
wrote:

>I'd like to deprecate those two functions, as well as the setters
>QFile::setEncodingFunction and setDecodingFunction. I'd like to go
>further and 
>make the setters no-op, and the actual functions be just an inline
>wrapper for 
>QString::to/fromLocal8Bit. However, I'll leave the encode/decodeName
>functions 
>as part of the Qt 5 API.
>
>Rationale:
>
>Those two functions have been present in Qt since at least Qt 2 (see [1]
>and 
>[2]). Their purpose was to convert the UTF-16-based QString filenames to
>the 
>local filesystem encodings on Unix systems. Back in those days, some
>people had 
>file names encoded with a different encoding than the locale -- for
>example, 
>UTF-8 for the file names and Latin 1 or 15 for the data, or vice versa.
>
>For that reason, Qt developers should use QFile::encodeName when
>converting a 
>QString for use in the POSIX C function calls, and similarly use
>QFile::decodeName when converting data from the POSIX calls to QString.
>
>That concept is broken.
>
>The POSIX calls are not the only source of strings. There are more, like
>for 
>example the command-line and data found in files. When parsing the
>command-
>line, QCoreApplication applies QString::fromLocal8Bit indiscriminately,
>since 
>it doesn't know which arguments refer to files and which ones don't. If
>you're 
>reading from a file, you're likely to do the same or to use QTextStream,
>which 
>amounts to the same problem.
>
>Moreover, if you're going to print a file name to a file, what do you
>use? When 
>communicating with other programs, what encoding should be used? How
>about 
>reporting information on the terminal (stdout and stderr)? Similar to
>QCoreApplication, when you set file names as part of the arguments in
>QProcess 
>indiscriminately applies toLocal8Bit, since it doesn't know what is a
>file name 
>and what isn't.
>
>Therefore, I call this concept broken. There's only one possible encoding
>for 
>the file system and it's the locale's encoding.
>
>I will make the change and submit for approval. I will not wait for the
>discussion on the mailing list because, quite frankly, I do not expect
>anyone 
>to disagree. 
>
>If you *do* disagree, please speak up and make sure you have very
>convincing 
>arguments on why we should keep this functionality and how developers
>should 
>address the problems I described above. If the community agrees to
>leaving 
>them, we can revert my patches.
>
>[1] http://doc.trolltech.com/2.3/qfile.html#6d63a6
>[2] http://doc.trolltech.com/3.3/qfile.html#encodeName
>-- 
>Thiago Macieira - thiago.macieira (AT) intel.com
>  Software Architect - Intel Open Source Technology Center
>     Intel Sweden AB - Registration Number: 556189-6027
>     Knarrarnäsgatan 15, 164 40 Kista, Stockholm, Sweden
>_______________________________________________
>Development mailing list
>Development at qt-project.org
>http://lists.qt-project.org/mailman/listinfo/development




More information about the Development mailing list