1

QUrlの一部をUnicodeに変換したい。

特定の URL がwww.ÄSDF.deあり、それを に変換したいと考えていwww.%C4SDF.deます。Qtでそれを行うにはどうすればよいですか?

この方法を使用すると、QUrl::toEncoded()常に変換された URL が UTF-8 hex: "www.%C3%83%C2%84SDF.de" で取得されます。

4

2 に答える 2

4

この関数は常に % エンコードの前に UTF-8 バイト シーケンスにエンコードするため、www.%C4SDF.dewith で生成することはできません。QUrl::toPercentEncoding

ISO-8859-1 のような非 UTF-8 エンコーディングを実際に使用する必要がある場合 (通常、残念なレガシー アプリケーションとの互換性のため)、QByteArray::toPercentEncodingから生成したバイト配列を使用する必要がありますQString::toLatin1

ただし、おそらくそれもやりたくないでしょう。UTF-8 正しいものでさえ、URI でwww.%C3%84SDF.deホスト名を指定する有効な方法ではありません。代わりに、 IDN アルゴリズム(Punycode を使用) をwww.ÄSDF.de使用してエンコードする必要があり、 .www.xn--sdf-pla.de

簡単で通常は最善の方法は、QUrl::toEncodedです。これにより、IRI が変わります。たとえば、次のようになります。

http://www.äsdf.de/äsdf?äsdf=äsdf

有効な URI に:

http://www.xn--sdf-pla.de/%C3%A4sdf?%C3%A4sdf

(再度、IRI には UTF-8 が必要であることに注意してください。)

于 2011-08-24T12:00:50.730 に答える
0

toEncodedUrl は QT5 で廃止されました。
これは私がしました:
url.setUrl(QString(QUrl::toPercentEncoding(s, "/:")));

于 2014-10-03T14:11:14.257 に答える