<div dir="ltr">Hello,<div><br></div><div>I try to retrieve strings from db with <span style="color:rgb(0,128,0)">QODBC </span>(QT 5.3.1 windows).</div><div>Database locale is en_US.819 (and ODBC driver does not work if client locale is not set to en_US.819). Strings (stored by windows application in db) are cp1250 encoded.</div>

<div><br></div><div>And instead of "<span style="color:rgb(170,0,0);font-family:Courier;font-size:10pt">doručené</span>" I got "<span style="color:rgb(170,0,0);font-family:Courier;font-size:10pt">doru?en?</span>".</div>

<div><br></div><div>Here is part of my code:</div><div><pre style="margin-top:0px;margin-bottom:0px"><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">  </span><span style="color:rgb(128,0,128)">QTextCodec</span><span style="color:rgb(0,0,0)">::</span><span style="color:rgb(0,0,0)">setCodecForLocale</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(128,0,128)">QTextCodec</span><span style="color:rgb(0,0,0)">::</span><span style="color:rgb(0,0,0)">codecForName</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,128,0)">"cp1250"</span><span style="color:rgb(0,0,0)">));</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">  </span><span style="color:rgb(128,0,128)">QTextCodec</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">*</span><span style="color:rgb(0,0,0)">codec_db</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">=</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,0,128)">QTextCodec</span><span style="color:rgb(0,0,0)">::</span><span style="color:rgb(0,0,0)">codecForName</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,128,0)">"latin1"</span><span style="color:rgb(0,0,0)">);</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">  </span><span style="color:rgb(128,0,128)">QSqlRecord</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">rec</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">=</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">query</span><span style="color:rgb(0,0,0)">.</span><span style="color:rgb(0,0,0)">record</span><span style="color:rgb(0,0,0)">();</span></pre>


<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">  </span><span style="color:rgb(0,0,128)">qDebug</span><span style="color:rgb(0,0,0)">()</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)"><<</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">"test:</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">"</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)"><<</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">"doručené"</span><span style="color:rgb(0,0,0)">;</span></pre>


<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">  </span><span style="color:rgb(128,128,0)">while</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">query</span><span style="color:rgb(0,0,0)">.</span><span style="color:rgb(0,0,0)">next</span><span style="color:rgb(0,0,0)">())</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">{</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,128,0)">for</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(128,128,0)">int</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">x</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">=</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,128)">0</span><span style="color:rgb(0,0,0)">;</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">x</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)"><</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">rec</span><span style="color:rgb(0,0,0)">.</span><span style="color:rgb(0,0,0)">count</span><span style="color:rgb(0,0,0)">();</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">x</span><span style="color:rgb(0,0,0)">++)</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">{</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">      </span><span style="color:rgb(128,0,128)">QVariant</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">variant</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">=</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">query</span><span style="color:rgb(0,0,0)">.</span><span style="color:rgb(0,0,0)">value</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">x</span><span style="color:rgb(0,0,0)">);</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">      </span><span style="color:rgb(128,128,0)">if</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">rec</span><span style="color:rgb(0,0,0)">.</span><span style="color:rgb(0,0,0)">value</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">x</span><span style="color:rgb(0,0,0)">).</span><span style="color:rgb(0,0,0)">type</span><span style="color:rgb(0,0,0)">()</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">==</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,0,128)">QMetaType</span><span style="color:rgb(0,0,0)">::</span><span style="color:rgb(128,0,128)">QString</span><span style="color:rgb(0,0,0)">)</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">{</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">        </span><span style="color:rgb(128,0,128)">QByteArray</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">encodedString</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">=</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">codec_db</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(0,0,0)">fromUnicode</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">variant</span><span style="color:rgb(0,0,0)">.</span><span style="color:rgb(0,0,0)">toByteArray</span><span style="color:rgb(0,0,0)">());</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">        </span><span style="color:rgb(0,0,128)">qDebug</span><span style="color:rgb(0,0,0)">()</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)"><<</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">"db_str:</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,128,0)">"</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)"><<</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">encodedString</span><span style="color:rgb(0,0,0)">;</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">      </span><span style="color:rgb(0,0,0)">}</span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(0,0,0)">}</span></pre>

<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">  </span><span style="color:rgb(0,0,0)">}</span></pre></pre></div><div>How can I fix encoding of db output?</div><div><br></div><div>PS: In python 3.4.1 I am able to get correct output (via pyodbc) with this:</div>

<div><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(128,128,0)">    print</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,128,0)">"</span><span style="color:rgb(0,128,0);font-family:arial">db_str</span><span style="font-family:arial;color:rgb(0,128,0)">:"</span><span style="font-family:arial;color:rgb(0,0,0)">,</span><span style="font-family:arial;color:rgb(192,192,192)"> </span><span style="font-family:Courier;font-size:10pt;color:rgb(0,0,0)">db_str</span><span style="font-family:arial;color:rgb(0,0,0)">.</span><span style="font-family:Courier;font-size:10pt;color:rgb(0,0,0)">encode</span><span style="font-family:arial;color:rgb(0,0,0)">(</span><span style="font-family:arial;color:rgb(0,128,0)">'latin1'</span><span style="font-family:arial;color:rgb(0,0,0)">).</span><span style="font-family:Courier;font-size:10pt;color:rgb(0,0,0)">decode</span><span style="font-family:arial;color:rgb(0,0,0)">(</span><span style="font-family:arial;color:rgb(0,128,0)">'cp1250'</span><span style="font-family:arial;color:rgb(0,0,0)">))</span><br>

</pre></div><div>But I would prefer to use C++ and QT5...</div><div><br></div><div><div>Zdenko</div>
<input name="virtru-metadata" type="hidden" value="{"email-policy":{"state":"closed","expirationUnit":"days","disableCopyPaste":false,"disablePrint":false,"disableForwarding":false,"expires":false},"attachments":{}}"></div>

</div>