Početak › Forumi › Linuks › Programiranje › Qt YUSCII -> UTF-8
- This topic has 4 odgovora, 4 glasa, and was last updated 18 years, 3 months ranije by
jboban.
-
AutorČlanci
-
17. april 2008. u 12:54 pm #10009
jboban
UčesnikPostoji li neki jednostavniji način da se u Qt-u uradi konveziju zaostalog YUSCII teksta u UTF-8 od prostog replace pojedinačnih znakova?
17. april 2008. u 2:35 pm #69149burga
UčesnikAko 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.
17. april 2008. u 2:38 pm #69150foxbunny
UčesnikYUSCII != 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.
17. april 2008. u 7:12 pm #69151Časlav Ilić
UčesnikPostoji 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:
[code]static QHash dictY2L;
static void initYusciiToLatin (QString &str)
{
QString yuscii = QString::fromAscii(“^~[{]}\|@`”);
QString latin = QString::fromUtf8(“Č芚ĆćĐđŽž”)
for (int i = 0; i < yuscii.length(); ++i) {
dictY2L[yuscii] = latin;
}
}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 = dictY2L.value(str, str);
}
return nstr;
}[/code]22. april 2008. u 5:01 pm #69152jboban
UčesnikSad 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 😉
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:
[code]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;
}
[/code] -
AutorČlanci
Moraš biti prijavljen da bi postavio komentar u ovoj temi.