2011-08-24 4 views
1

QUrl의 일부를 유니 코드로 변환하고 싶습니다.QString 또는 QUrl을 유니 코드로 변환

나는 주어진 URL이 www.ÄSDF.de이고 www.%C4SDF.de으로 변환하고 싶습니다. Qt에서 어떻게 할 수 있습니까?

QUrl::toEncoded() 메서드를 사용할 때 변환 된 URL은 항상 UTF-8 16 진수로 변환됩니다. "www. % C3 % 83 % C2 % 84SDF.de".

+0

- QUrl :: toPercentEncoding (QString :: fromUtf8 ("www.ÄSDF.de")); - 이제는 올바른 utf-8 코드 인 "www. % C3 % 84SDF.de"를 얻지 만 어떻게 유니 코드 "www. % C4SDF.de"에서이 URL을 변환 할 수 있습니까? – Garrz

답변

4

QUrl::toPercentEncoding으로 생성 할 수 없습니다.이 함수는 항상 % 인코딩 전에 UTF-8 바이트 시퀀스로 인코딩됩니다.

ISO-8859-1과 같은 UTF-8이 아닌 인코딩 (일반적으로 불행한 기존 응용 프로그램과의 호환성을 위해)을 사용해야하는 경우 QString::toLatin1에서 생성하는 바이트 배열에 QByteArray::toPercentEncoding을 사용해야합니다.

그러나 그 중 하나를 원하지 않을 수도 있습니다. 심지어 UTF-8-correct www.%C3%84SDF.de은 URI에 호스트 이름 www.ÄSDF.de을 지정하는 유효한 방법이 아닙니다. 대신 www.xn--sdf-pla.de을 사용하여 IDN algorithm (Punycode 사용)을 사용하여 인코딩해야합니다.

쉽고 일반적으로 진행하는 가장 좋은 방법은 QUrl::toEncoded입니다. 작업 URI에

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

: 이것은 IRI, 예를집니다

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

0

toEncodedUrl은 QT5에서 사용되지 않습니다. (참고 다시 IRI는 UTF-8이 필요).
I했던이 :와
url.setUrl(QString(QUrl::toPercentEncoding(s, "/:")));