2012-04-16 5 views
0

Qtでかなりの作業をしていますが、私はQStringsをQByteArrayに変換して戻すために使用しますか?私は何をすべきかを知っていないいくつかの他の問題があります。どちらを使いますか、utf8かAscii

例えば、QUrlを扱う場合。私はメンバーの上QStringのあるオブジェクトを持っていると私はこのようにそれを設定しています:

blobByType->setBlobAbsoluteUri(request.url().toEncoded()); 

toEncoded()はそれがUTF8に変換し、すべての非ASCII文字は、その後、パーセントエンコードされています。 QStringをQByteArrayに設定すると、自動的にAsciiに変換されます。

また、QStringからQByteArrayへの変換を行うときには、現在toUtf8()を使用しています。

私の質問は、QStringからQByteArrayへ、またはその逆に変換するときはどうすればよいですか?

+0

この 'QByteArray'を何のために使うのか、それともどのような種類の文字列を格納するのかは言わないでください。 –

+0

いくつかのライブラリやchar配列を必要とするいくつかの関数を扱う場合はqbytearrayが必要です。 QString – chikuba

+0

OKを使用すると、それらのライブラリと関数は何を受け入れますか?彼らはUTF-8を期待していますか、それともASCIIのみを取っていますか?あるいは、彼らはラテン1などのようなものを完全に取っていますか? –

答えて

1

英語以外の文字を使用する可能性がある場合は、UTF-8を使用する方がよいでしょう。あなたのコードを将来再利用するかもしれないことを誰も知らないので、それを使うのが標準的であり、良い方法です。

+0

QString()がQBYteArrayをどのように変換するかを変更する必要がありますか? – chikuba

+0

私はQTの専門家ではありません。あなたは書いている、あなたはtoUtf8()変換を使っていた。あなたはすでにUTF8を使用していることを理解しています。だから私のアドバイスはそれを続けています。 – shark555

+0

暗黙的な変換が心配な方は、QT_NO_CAST_FROM_ASCIIとQT_NO_CAST_TO_ASCIIを定義して、それらをすべて無効にすることをお勧めします。そして、明示的に変換するためにtoUtf8/fromUtf8、QLatin1String()などを使用してください。 –

3

UTF-8とASCIIは、通常英語の文字を扱うときとまったく同じものです。違いは、英語以外の文字を使用する場合、UTF-8はASCIIをサポートしないが、英語はサポートしないということです。 UTF-8を使って安全にプレイすることをお勧めします。

+0

文字列の作成時にQStringをUtf8()から使用する方法は? – chikuba

+0

'newString = QString :: fromUtf8(yourArray);'?私はあなたが尋ねていることを本当に理解していません... – slartibartfast

+0

http://qt-project.org/doc/qt-4.8/qstring.html#QString-9現在はアスキーに変換するコンストラクタを使用しています – chikuba

関連する問題