trinity-devel@lists.pearsoncomputing.net

Message: previous - next
Month: March 2016

Re: [trinity-devel] TQString::fromUtf8 vs TQString::fromLatin1

From: Fat-Zer <fatzer2@...>
Date: Wed, 23 Mar 2016 03:39:46 +0300
2016-03-23 2:08 GMT+03:00 deloptes <deloptes@...>:
> Hi all,
>
> I need some help again.
>
> Which is the preferred function to use when creating TQString from
> std::string and how can I make sure that I end up with Utf-8.
>
> The thing is that input in std::string can be either UTF-8 or not UTF-8.
>
> What is the standard way of doing this in TDE (TQt)?
>
> I am really confused, because I was looking in some KDE3/TDE code and I see
> both used.
>
> My problem is that some older phones would most likely lack UTF and newer
> would do only UTF. So how can I make sure to "speak the right language"
> with them?
>
> A hint would be appreciated.
>
> regards

1) If you construct a string from a const char * c-string in your code
you better use fromLatin1(). e.g TQString::fromLatin1 ("blabla")
1.1) If the string includes some local symbols or some non-latin1
symbols somewhy, but your source xode is strictly in utf8 you may use
TQString::fromUtf8 ("10�") [note the degree sign], But this is kinda
dirty practice
2) If you receive a string from OS e.g. a file path from system calls,
you would likely should use TQString::fromLocal8bit(), Note that it
will decode from utf8 on most modern linux boxes.
3) If you receive a string from some third party module or where ever
else you should follow to it's documentation. It may return a text in
some other encoding, and you will have to use TQTextCodec (or whatever
it's called).
3.1) If you are not sure if it will give you either a latin1 or utf8
string, You are safe to use TQString::fromUtf8()

Note that it's quite safe to use fromUtf8() everywhere instead of
fromLatin1(), in most of cases you risk to get just some performance
overhead...