Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [SOLVED] [Qt 5.0.1 Multi Platform] How can I convert QNetworkReply::readAll() to UTF-8?

[SOLVED] [Qt 5.0.1 Multi Platform] How can I convert QNetworkReply::readAll() to UTF-8?

Scheduled Pinned Locked Moved General and Desktop
4 Posts 2 Posters 3.3k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    joergpauly
    wrote on last edited by
    #1

    Hello, everyone,

    the title says it all:
    I get an HTML-source from a german website by QNetworkReply::readAll(), which is first captured into a QByteArray.
    Then this is converted to a QString, and then this is parsed.

    The application was first developed under Qt 4.8.1 where everything worked fine; but after porting it to 5.0.1 the german characters are shown wrong.

    Is there any option while receiving the stream to get the chars well coded?
    Or can I convert the QByteArray to UTF-8 anyhow?

    Thanks in advance for every hint.

    Greetings
    Joerg

    1 Reply Last reply
    0
    • Chris KawaC Offline
      Chris KawaC Offline
      Chris Kawa
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Well, the title doesn't say it all actually ;)
      First of all what is the original encoding of the website (I suspect utf-8)? Second - how do you convert the QByteArray to QString, and the third thing is why do you want to have a utf-8 QString in a first place?

      To construct a QString from it you need to know how to interpret the bytes - are those single byte characters, double byte, varying lenght and what is the encoding. Assuming the website is utf-8 the QByteArray will contain the actual bytes representing unicode characters.

      To create QString interpreting those bytes as utf-8 representation you can use QString::fromUtf8(yourByteArray). But lets be precise. This is not converting QByteArray to utf-8 as you wrote. This is converting from bytes representing utf-8 data into the QString, which has it's own internal representation (16bit wide unicode characters).

      1 Reply Last reply
      0
      • J Offline
        J Offline
        joergpauly
        wrote on last edited by
        #3

        Hi, Krzysztof,

        first of all: that issue is solved!!!

        The encoding of the website is Latin1 (what I learned a few minutes ago...;-)) but as long as QString in 4.x.x versions handled it well everything was ok, i.e. there was no need to think about something like that.

        O.k., these times are over now and I see myself being forced to write better code...
        As we say in Cologne: "Who knows, what it is good for?" (Cologne's Fundamental Law; Chapter 5)

        After reading your posting it was an easy task to transfer the QByteArray into a QString using QString::fromLatin1().

        The reason to need a QString is very simple:
        Some time ago I wrote a little library that is able to parse a stream of text data to extract any phrase needed.
        The easiest way was to use QString and it's comfortable members.

        ...and I just did not want to refine the wheel... ;-)

        Thanks a lot for that very valuable hint!!!
        Joerg

        1 Reply Last reply
        0
        • Chris KawaC Offline
          Chris KawaC Offline
          Chris Kawa
          Lifetime Qt Champion
          wrote on last edited by
          #4

          Great, glad I could help.

          I didn't mean you shouldn't use QString. On the contrary, that's what it's for! I just meant that there's no such thing as UTF-8 QString. The internal QString encoding is UTF-16.

          1 Reply Last reply
          0

          • Login

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups
          • Search
          • Get Qt Extensions
          • Unsolved