Qt YUSCII -> UTF-8
Dobrodošli, Gost. Molim vas prijavite se ili se registrujte.
Da li ste izgubili vaš aktivacioni e-mail?

Prijavite se sa korisničkim imenom, lozinkom i dužinom sesije

Linuxo Forumi

Stranice: [1]   Idi dole
  Štampaj  
Autor Tema: Qt YUSCII -> UTF-8  (Pročitano 1273 puta)
0 članova i 1 posetilac pregledaju ovu temu.
jboban
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 841



« poslato: 17 Април 2008, 13:54:07 »

Postoji li neki jednostavniji način da se u Qt-u uradi konveziju zaostalog YUSCII teksta u UTF-8 od prostog replace pojedinačnih znakova?
Prijavi uredniku   Sačuvana
burga
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 568


Meet Linus


WWW
« Odgovor #1 poslato: 17 Април 2008, 15:35:18 »

Ako imaš Qt Assistant traži toUTF8, dobićeš dosta korisnih informacija, imaš i to- i fromLocale i sl. Postoji i zastavica za podešavanje lokalnog encodinga. Mrzi me da prebacujem opise svih ovih funkcija ovde.
Prijavi uredniku   Sačuvana

Нема Бога, и Дирак је његов пророк
foxbunny
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 2436



WWW
« Odgovor #2 poslato: 17 Април 2008, 15:38:48 »

YUSCII != encoding

Obično konverziju možeš da završiš sa serijom najobičnijih zamena. Jedini problem je kada iz ćirilice prebacuješ u latinicu. Onda imaš problema sa diftonzima (nj, lj, dž) kod velikih slova: kad su sva velika NEMANJA, onda je i J veliko, na početku reda Njegoš, onda je J malo. Hm, i da li ima još nešto... Mislim da je to to.
Prijavi uredniku   Sačuvana

Časlav Ilić
Full Member
***
Van mreže Van mreže

Pol: Muškarac
Poruke: 224



« Odgovor #3 poslato: 17 Април 2008, 20:12:07 »

Citat: jboban
Postoji li neki jednostavniji način da se u Qt-u uradi konveziju zaostalog YUSCII teksta u UTF-8 od prostog replace pojedinačnih znakova?

Pretpostavljam da postoji valjan razlog zašto to raditi u KuT-u, pa da ne pitam :)

Inače, ne vidim kako bi išlo prostije od smene pojedinačnih znakova? Nešto kao:
Kod:
static QHash<QChar, QChar> dictY2L;
static void initYusciiToLatin (QString &str)
{
    QString yuscii = QString::fromAscii("^~[{]}\\|@`");
    QString latin = QString::fromUtf8("Č芚ĆćĐđŽž")
    for (int i = 0; i < yuscii.length(); ++i) {
        dictY2L[yuscii[i]] = latin[i];
    }
}

QString yusciiToLatin (QString &str)
{
    static bool first = true;
    if (first) {
        first = false;
        initYusciiToLatin();
    }

    QString nstr(str);
    for (int i = 0; i < str.length(); ++i) {
        nstr[i] = dictY2L.value(str[i], str[i]);
    }
    return nstr;
}
« Poslednja izmena: 20 Април 2008, 12:11:23 od Časlav Ilić » Prijavi uredniku   Sačuvana
jboban
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 841



« Odgovor #4 poslato: 22 Април 2008, 18:01:41 »

Sad tek videh da odgovor koji sam poslao nije prošao.

Pretpostavljam da postoji valjan razlog zašto to raditi u KuT-u, pa da ne pitam
Qt je aplikaciju kojoj se serviraju takve stvari koje ja treba da uvedem u red, tj. u utf-8 Wink

Ok je ovo rešenje, a ja sam u brzini i s obzirom na ograničen i mali skup znakova za zamenu koristio nekoliko if else if - ova, definisao prazan string na koji sam dodavao znak po znak iz originalnog stringa, zamenjen ili ne, zavisno da li je naše YUSCII slovo.

@edit:
Kod:
QString yuscii2utf8(const QString& sPar)
{
    QString sNewStr;
    for(int j = 0; j < sPar.size(); j++) {
        QChar c = sPar[j];
             if (c == '{') sNewStr += "š";
        else if (c == '|') sNewStr += "đ";
        else if (c == '~') sNewStr += "č";
        else if (c == '}') sNewStr += "ć";
        else if (c == '`') sNewStr += "ž";
        else if (c == '[') sNewStr += "Š";
        else if (c == '\\')sNewStr += "Đ";
        else if (c == '^') sNewStr += "Č";
        else if (c == ']') sNewStr += "Ć";
        else if (c == '@') sNewStr += "Ž";
        else sNewStr += c;
    }
    return sNewStr;
}
« Poslednja izmena: 23 Април 2008, 21:40:36 od jboban » Prijavi uredniku   Sačuvana
Stranice: [1]   Idi gore
  Štampaj  
 
Prebaci se na: