> -----Original Message-----
> From: Thiago Macieira <thiago.macie...@intel.com> 
>
> On Tuesday, 22 January 2019 09:01:16 PST Arnaud Clère wrote:
> > QByteArray is the official way to deal with utf8 strings but:
> > 1. This discussion shows it is not as known as it should be and I 
> > argue the name does not help 2. Dealing with binary data and all kind 
> > of string encodings in a single class is error-prone
>
> And yet that's what we used to have in Qt 3 (remember QCString?). We went 
> away from it for a reason.

Sorry no, I never used Qt3. I just googled it looking for problems and only 
found ones that should be solved now by QByteArray:
- explicit sharing
- bad performance due to append() being O(length()) since it scans for a null 
terminator

> And 3: some character-mutating operations in QByteArray (toUpper, etc.) are 
> Latin1, not UTF-8.

A QUtf8String could override toUpper() and toLower() which are unfortunate if 
QByteArray really is the official way to deal with utf-8 strings...

> > Hence my suggestion of adding a QUtf8String deriving from QByteArray...
> Not likely to happen. If we add a QUtf8String, it will be like QLatin1String, 
> which in turn was meant to be similar to QStringView, not like QString. That 
> means no mutation and no owning memory.

The use case I am talking about is really a mutable utf8 container, even though 
it could provide a QUtf8StringLiteral macro similar to QByteArrayLiteral. I do 
not understand why a QUtf8String should necessarily be like a QLatinString.

OTOH, I would love to be able to manipulate QLatin1String/QUtf8String with a 
QStringView when dealing with possibly non-ASCII content. But QStringView seems 
to require knowing the number of remaining Unicode characters in constant time 
so I guess it is out of question...

> And I don't want to add QUtf8String until SG16's char8_t gets settled. It'll 
> probably be settled by C++20, which means we can probably work on this during 
> Qt 6 lifetime, possibly even 6.1 or 6.2.

It makes sense to avoid future incompatibilities with the standard but 
fortunately Qt sometimes chooses to solve real problems ahead in time  ;-)



_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to