On quarta-feira, 26 de dezembro de 2012 16.23.30, Nikos Chantziaras wrote:
> On 26/12/12 16:16, Thiago Macieira wrote:
> > On quarta-feira, 26 de dezembro de 2012 15.54.25, Nikos Chantziaras wrote:
> >> I need the actual name of the character set from which
> >> 
> >> QFile::decodeName() is converting. [...]  Unfortunately, this:
> >>     QTextCodec::codecForLocale()->name()
> >> 
> >> returns "System" on platforms that come with a Qt that uses ICU (pretty
> >> much all Linux distributions.) [...]
> >> 
> >> Is there anything I can do?
> > 
> > There is no Qt API to return that value. You can use the Windows API,
> > POSIX
> > API or ICU API to find out by yourself.
> 
> Too bad.
> 
> Though the API *is* there.  It's QTextCodec::name() and
> QTextCodec::aliases().  IMO it's a mistake by Qt to return "System"
> there, since "System" has exactly zero use.  Or at least
> QTextCodec::aliases() should contain the actual name in one of its elements.

It's not a mistake. It returns "System" meaning "I've just asked Windows or 
ICU (or in Qt 4, iconv) to do it for me and I don't care what the encoding 
was".

Due to construction, in the case of ICU, the QIcuCodec class actually knows 
the name of the system codec, since it needed to ask for it via 
ucnv_getStandardName.

But in the case of the Windows and iconv codecs, we simply don't know. We ask 
the system API to do it (MultiByteToWideChar, WideCharToMultiByte; iconv's 
iconv_open with a NULL source or destination).

Why do you need the codec name anyway?
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to