Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Linux prebacio 4%

[es] :: Advocacy :: Linux prebacio 4%
(TOP topic, by flighter_022)
Strane: << < .. 142 143 144 145 146 147 148 149 150 151 ... Dalje > >>

[ Pregleda: 345506 | Odgovora: 3057 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
2a02:8071:31e1:dd00:6400:7ab..



+7174 Profil

icon Re: Linux prebacio 2%07.11.2020. u 10:52 - pre 42 meseci
Dobijas isti efekat kao da si ti direktno uneo UTF-8 kodove, kao u mojoj poruci. Tebi to radi preprocesor sa u8.

Razlog zasto ne ispisuje kako treba je jednostavan: Windows API-ji taj tekst ne tretiraju kao UTF-8, cak i ako je ispravan UTF-8 sto se kodova tice. Verovatno moras eksplicitno da Win32 API-ju "nagovestis" da je u pitanju UTF-8, bilo menjanjem kodne strane u programu, ili "beta" menjanjem sistemskog lokaliteta na 65001 na nivou OS-a.

Microsoft verovatno ne sme da "ukljuci" UTF-8 svuda iz 2 razloga:

- MSFT kod
- Sav 3rd Party kod

Ironicno, Microsoftove odluke iz proslosti ce im ovde bar malo pomoci: vecina "novih" Win32 aplikacija (novih = sve u proteklih 10 godina) je verovatno "Unicode" (UTF-16), bar na papiru kako su kompajlirane. To znaci da ce biti mnogo manje "sudara" korisnickog koda koji ocekuje ASCII i koda koji je predvidjen za UTF-8, zato sto vecina korisnickog Win32 koda sa OS-om komunicira preko "W" verzija API-ja (UTF-16).

"Skoro" nije "Sve" - sto znaci da uvek postoji rizik. Mada MSFT ovo moze relativno lako da resi tako sto aplikacije koje nemaju neki novi manifest tretira kao ANSI ili UTF-16, dok nove aplikacije bivaju tretirane kao UTF-8 ili UTF-16.

Ni to nije savrseno resenje, ali bar obezbedjuje kakav takav plan.

MSFT sistemski kod je druga prica, ovaj kod mora da funkcionise 100% korektno sa UTF-8, inace sve gubi smisao.

Verovatno ne pomaze to sto MSFT verovatno nije ni planirao neke velike promene na OS-u.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.gprswap.mts.telekom.rs.



+2789 Profil

icon Re: Linux prebacio 2%07.11.2020. u 11:17 - pre 42 meseci
Jedno od velikih imena iz istorije računastva (zaboravio sam koje) je reklo da obezbeđivati kompatibilnost znači ponavljati greške.

MS je izgleda preterivao sa čvanjem kompatibilnosti unazad.

Jedno od rešenja je bilo da izbaci loše funkcije, tako da programi koji ih koriste, a nisu rekompajlirani, ne mogu da rade ili da rade u nekom režimu kompatibilnosti sa nekom starijom verzijom, dok se taj reži kompatibilnosti isporučuje. Kada istekne podrška za neku verziju Windows-a, onda naredne verzije nemaju taj režim kompatibilnosti. Pritom, da prohram u režimu kompatibilnosti sa starijom verzijom ne može da koristi funkcije koje nisu postojale u toj verziji. Na taj način bi proizvođaći softvera bili prinuđeni da apdejtuju svoje programe na novija, bolja rešenja.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.gprswap.mts.telekom.rs.



+2789 Profil

icon Re: Linux prebacio 2%07.11.2020. u 15:30 - pre 42 meseci
Koliko god da sam mislio da Ivan Dimković lupeta, svelo se na to da sam u okviru ove diskusije naučio nešto novo.

1. Da WCHAR* na Windows-u nema isti broj elemenata (kao niz, ne računajući Švarcenegera na kraju) i znakova teksta, čak i kada smo u skupu znakova koji Windows podržava za odgovarajuću funkciju.

2. Lepote UTF-8 kodiranja. Možeš da tražiš podstring u stringu prostim traženjem podniza bajtova u nizu bajtova. Ne mora se razmišljati o tome koji je bajt početni bajt nekog znaka, jer se nijedan bajt koji je početni ne može poklopiti nisajednim koji nije početni. Jedino treba pri pretraživanju voditi računa da nismo stigli do Švarcenegera na kraju.

Inače, i dalje mislim da je Ivan debelo preterao sa konstatacijom da je Win32 API smeće.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Linux prebacio 2%07.11.2020. u 16:48 - pre 42 meseci
Citat:
Branimir Maksimovic:

Problem nastaje pre ispisa, tj u pokusaju konverzije zato sto locale ne predvidja utf8. Ivan je lepo pokazao.

Taj deo moze da se sredi - problem je sto ako se sredi za ovo, nece raditi na necem drugom. Nece raditi u Win10 sa vise kodnih strana u stringu onda.

A ouput se ne moze dobiti korektan, jer Console konvertuje sam u (Windows) ANSI, cak i kada se koristi wchar output (i wcout i WriteConsoleW). Zato sam i pitao sta se desi ako ispises u file.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
p2-115.p59.bvcom.net.



+1064 Profil

icon Re: Linux prebacio 2%07.11.2020. u 16:54 - pre 42 meseci
Pa dobio sam korektan cim sam striklirao podrsku za utf8...
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Linux prebacio 2%07.11.2020. u 17:41 - pre 42 meseci
Mislio sam bez toga, i na ranijim verzijama Windowsa.
Ne mozes ocekivati da ce svi korisnici imati Win10.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
p2-115.p59.bvcom.net.



+1064 Profil

icon Re: Linux prebacio 2%07.11.2020. u 17:46 - pre 42 meseci
Dexic, ovo ocigledno ne radi na Windows-u, kao sto radi na Linux-u koji odavno ima podrsku za utf8.
Windows je oduvek bio utf16 i to koristis gde god da radis. mbstowcs i prijatelji :P
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Linux prebacio 2%07.11.2020. u 18:24 - pre 42 meseci
Slazem se da bolje radi na Linuxu.
Konzola nije UTF16, inace bi WriteConsoleW/wcout mogli da izbace prave karaktere ako se printa wstring (probam sao, ne radi - u tvom kodu nema validnog wstring-a, nego se proba konverzija iz string-a, sto ne radi).
Probaj sam.

Mislim da Windows uopste nije UTF16, vec USC-2, za W API?
Probao sam da napravim ovaj filename: "C:\\麤鹿羴攀尴尬齉籲颧饕餮\U00030EDE" ali zadnji karakter (biang, trazi 4bytes) ne moze da se enkodira za filename (mada ne moze ni sam string da ga prikaze :D).
Ne mogu da ga copy-pasteujem, niko jos uvek nije na kompjuteru napisao taj karakter izgleda ;)
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
p2-115.p59.bvcom.net.



+1064 Profil

icon Re: Linux prebacio 2%07.11.2020. u 18:36 - pre 42 meseci
Dexic:"Konzola nije UTF16, inace bi WriteConsoleW/wcout mogli da izbace prave karaktere ako se printa wstring"

Ali moze da se isprinta, imas gore moj post pa vidi kako sam isprintao. To zavisi od lokala. Izaberi srpsku cilirilicu i printace mogu da se kladim.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.gprswap.mts.telekom.rs.



+2789 Profil

icon Re: Linux prebacio 2%07.11.2020. u 18:46 - pre 42 meseci
Čekaj, Windows-ova KONJzola ne može da štampa ćirilicu, ako sistem nije podešen na ćirilicu? Jesam li dobro razumeo?
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Linux prebacio 2%07.11.2020. u 18:50 - pre 42 meseci
^tako je. Moze u onom novom UTF8 beta verovatno.
Ali stariji OSes ne mogu da stampaju cross codepage. Ako imas srpsku cirilicu i japansku hanji - ne mozes da odstampas u konzoli na Windows 7, bez da odvojis znakove i menjas CP za svaki podstring istog CPa.

Niti mozes da napravis filename koji ima combined ta dva CPa, ako ne koritis WideChar od samog pocetka.

@bane, nisam te razumeo, u pravi su. Ja sam mislio za ostale slucajeve.
Sad sam probao na Windows 10 (prosli je na sedmici), bez da je UTF8 Beta podesen. WriteConsoleW izbaci dobar output. Izgleda da su bar to sredili.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
p2-115.p59.bvcom.net.



+1064 Profil

icon Re: Linux prebacio 2%07.11.2020. u 18:53 - pre 42 meseci
Citat:
Nedeljko:
Čekaj, Windows-ova KONJzola ne može da štampa ćirilicu, ako sistem nije podešen na ćirilicu? Jesam li dobro razumeo?


Mislim da ne. Jer Windows ima te kodne strane sa odgovarajucim karakterima, pa tako ako kodna strana nema karakter ne moze da ispise.
Eto vidi kad izaberem usa, on pravilno prevede onaj utf8 string ali usa kodna strana nema te karaktere pa ispise sta je odgovarajuci karakter
u toj kodnoj strani.
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Linux prebacio 2%07.11.2020. u 19:08 - pre 42 meseci
Ipak ne radi i sa UTF8. Probaj da dodas japanske karaktere, ne stampa ih.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
p2-115.p59.bvcom.net.



+1064 Profil

icon Re: Linux prebacio 2%07.11.2020. u 19:17 - pre 42 meseci
Konzola je onda sredjena, evo namestio srpsku cirilicu, imbue serbian (cyrillic), i ispisuje cirilicu ali nesto totalno bez veze.
Izgleda da na Windows-u mozes samo GUI aplikacije da prikazujes u unicode.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
2a02:8071:31e1:dd00:6400:7ab..



+7174 Profil

icon Re: Linux prebacio 2%07.11.2020. u 19:54 - pre 42 meseci
Citat:
Dexic:
Slazem se da bolje radi na Linuxu.
Konzola nije UTF16, inace bi WriteConsoleW/wcout mogli da izbace prave karaktere ako se printa wstring (probam sao, ne radi - u tvom kodu nema validnog wstring-a, nego se proba konverzija iz string-a, sto ne radi).
Probaj sam.


Ne, "konzola" jeste UTF-16 ako je lepo zamolis i izdr... pardon, pozoves interni API kako bi Windows-u dao do znanja da, sta znam, tvoji wchar-ovi jesu... UTF-16

Evo ti kod:

Code:

#include <iostream>
#include <io.h>
#include <fcntl.h>
#include <stdio.h>

int main()
{
         _setmode(_fileno(stdout), _O_U16TEXT); 

    std::wcout << L"\u0421\u0440\u043f\u0441\u043a\u0438 \u0458\u0435\u0437\u0438\u043a \u043f\u0440\u0438\u043f\u0430\u0434\u0430 \u0441\u043b\u043e\u0432\u0435\u043d\u0441\u043a\u043e\u0458 \u0433\u0440\u0443\u043f\u0438 \u0458\u0435\u0437\u0438\u043a\u0430 \u043f\u043e\u0440\u043e\u0434\u0438\u0446\u0435 \u0438\u043d\u0434\u043e\u0435\u0432\u0440\u043e\u043f\u0441\u043a\u0438\u0445 \u0458\u0435\u0437\u0438\u043a\u0430\u002e\u005b\u0031\u0032\u005d ";    
}


Evo sta treba da vidis:



Probaj ovo da nadjes lako u dokumentaciji. Ili, jos bolje, zapitaj se KOJI Q moras da radis ovo uopste?

Odgovor: zato sto je Win32 API djubre (da, @Nedeljko, bojim se da jeste... uzbudjivati OS predigrom da ispise wide string je samo slag na torti).

Sto je najjace, MSFT ovo nije ni dokumentovao kako treba. @Nedeljko, dodaj molim te jos jednu recku.

Citat:
Dexic
Mislim da Windows uopste nije UTF16, vec USC-2, za W API?


Napisano vec, UCS-2 je zamenjen sa "skoro" UTF-16 u Windows 2000.

TL;DR:

- Windows NT 3.1, 3.5x i 4.0 su UCS-2 + ANSI&Co
- Windows 2000 - Windows 8.1 su UTF-16 + WTF-8 + ANSI & Co
- Windows 10 je dodao i UTF-8 u pokusaju

Citat:

Probao sam da napravim ovaj filename: "C:\\麤鹿羴攀尴尬齉籲颧饕餮\U00030EDE" ali zadnji karakter (biang, trazi 4bytes) ne moze da se enkodira za filename (mada ne moze ni sam string da ga prikaze ).
Ne mogu da ga copy-pasteujem, niko jos uvek nije na kompjuteru napisao taj karakter izgleda


Pusti imena fajlova, to je jos jedna muka...

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Prikačeni fajlovi
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
2a02:8071:31e1:dd00:6400:7ab..



+7174 Profil

icon Re: Linux prebacio 2%07.11.2020. u 20:08 - pre 42 meseci
Citat:
Dexic
^tako je. Moze u onom novom UTF8 beta verovatno.


Nije tako, samo sto moras da znas "secret handshake" i da nezno motivises Windows da tvoj wcout shvati kao zelju da koristis UTF-16

Pogledaj kod koji sam okacio.

Citat:

Ali stariji OSes ne mogu da stampaju cross codepage. Ako imas srpsku cirilicu i japansku hanji - ne mozes da odstampas u konzoli na Windows 7, bez da odvojis znakove i menjas CP za svaki podstring istog CPa.


Da li si siguran da FONT koji konzola koristi ima te karaktere? Moj nema.

Probao sam i u MS Word-u - ni jedan od fontova koji mogu da se koriste nema tako da ne verujem da nesrecna konzola moze da se skocka. Doduse ja probao sa katakanom, sumnjam da je kanji drugaciji.

Citat:

Niti mozes da napravis filename koji ima combined ta dva CPa, ako ne koritis WideChar od samog pocetka.


Rekoh ti - batali imena fajlova, osim ako ne zelis infarkt da dobijes. To nije ni UTF-16 ni USC-2 ni ANSI, vec monstrum.

Najsigurnije: MICROS~1 (osim na YUSCII masinama)

Citat:

@bane, nisam te razumeo, u pravi su. Ja sam mislio za ostale slucajeve.
Sad sam probao na Windows 10 (prosli je na sedmici), bez da je UTF8 Beta podesen. WriteConsoleW izbaci dobar output. Izgleda da su bar to sredili.


Nista oni nisu sredili, samo nisu ukljucili adekvatno ponasanje OS-a zato sto se boje da nesto drugo ne eksplodira.

Drugim recima, djubre koje znamo je bolje od djubreta koje ne poznajemo:

1. Konzola printa UTF-16, ako joj izmasiras tabane
2. Sistem moze da bude UTF-8, ako ukljucis tajnu beta opciju - ali je garantovano da ce nesto da smrdi

@Nedeljko:

Citat:
Nedeljko
Koliko god da sam mislio da Ivan Dimković lupeta, svelo se na to da sam u okviru ove diskusije naučio nešto novo.


Misli jace.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Linux prebacio 2%07.11.2020. u 20:08 - pre 42 meseci
Pa za fajlove nisam imao problema nikada, jer sam W API koristio jos 1998. na NT4.

A za konzolu tek sada saznajem ovo...
Iako je ovo cist c++, a ne Windows specific.
A da citilicu + japanske karaktere ispise?

Ja mogu na JP OSu da ih stampam na konzoli.
Ne mora Kanji, moze bilo koji japanski?
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.gprswap.mts.telekom.rs.



+2789 Profil

icon Re: Linux prebacio 2%07.11.2020. u 20:14 - pre 42 meseci
Onda Windows advokati pitaju zašto se na Linux-u konzola koristi više nego na Windows-u.

Pa, jedan od razloga je taj što na Linux-u konzola radi, a na Windows-u konzola ne radi.

Dakle, ako imaš konzolni program koji treba da ispisuje mešovito ruski, francuski i japanski, od toga na Windows-ovom cmd.exe nema ništa. Trenutno nemam Windows kod sebe da isprobam. Na Linux-u je to ko dobar dan. Ceo Linux je UTF-8 i s tim nema nikakvih problema.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
2a02:8071:31e1:dd00:6400:7ab..



+7174 Profil

icon Re: Linux prebacio 2%07.11.2020. u 20:15 - pre 42 meseci
@Dexic,

Citat:

Pa za fajlove nisam imao problema nikada, jer sam W API koristio jos 1998. na NT4.


Ako nisi imao problema, bolje da se okrenes, zatvoris vrata i nikad ne postavis ta pitanja ponovo :-)

https://simonsapin.github.io/wtf-8/

^ ako si bas radoznao... glava 2 :)

Citat:

A za konzolu tek sada saznajem ovo...


Ne krivim te uopste, to je inace odlika propisno dizajniranog OS-a - nikad ti ne dosadi, uvek otkrivas nove bisere.

Citat:

Iako je ovo cist c++, a ne Windows specific.


To sto vidis je "cist c++", sta mislis kako je implementiran? CRT zove... iznenadjenje... Win32 API! :-)

Citat:

A da citilicu + japanske karaktere ispise?


Ne mere. Kod mene nemam ni font koji konzola hoce da koristi. Imas onu open source verziju MS terminala, mozda to hoce.

Citat:

Ja mogu na JP OSu da ih stampam na konzoli.
Ne mora Kanji, moze bilo koji japanski?


Verujem da japanski Windows stize sa fontovima za konzolu koji imaju japanska slova. Sumnjam da bi se prodavao u suprotnom :-)
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
2a02:8071:31e1:dd00:6400:7ab..



+7174 Profil

icon Re: Linux prebacio 2%07.11.2020. u 20:26 - pre 42 meseci
Citat:
Nedeljko:
Onda Windows advokati pitaju zašto se na Linux-u konzola koristi više nego na Windows-u.

Pa, jedan od razloga je taj što na Linux-u konzola radi, a na Windows-u konzola ne radi.


Mislis, konzola je djubre? Hmmm, pitam se kako li je implementirana ta konzola, mora da koriste neki razbijacki API...

Citat:

Dakle, ako imaš konzolni program koji treba da ispisuje mešovito ruski, francuski i japanski, od toga na Windows-ovom cmd.exe nema ništa. Trenutno nemam Windows kod sebe da isprobam.


Au contraire!!!

Sta je onda ovo?

Code:

#include <iostream>
#include <io.h>
#include <fcntl.h>
#include <stdio.h>

int main()
{
    _setmode(_fileno(stdout), _O_U16TEXT); 

    std::wcout << L"Think harder!" << std::endl;
    std::wcout << L"\u041c\u0438\u0441\u043b\u0438 \u0458\u0430\u0447\u0435\u0021" << std::endl;
    std::wcout << L"\u0052\u00e9\u0066\u006c\u00e9\u0063\u0068\u0069\u0073 \u0062\u0069\u0065\u006e" << std::endl;
}




A da... japanski, sorry - Windows 10 koji imam je ocigledno rasisticki OS :-) U Sijetlu su bazirani oni, sad ces da vidis kad ih prijavim kako brzo ima da prokonzoli katakanu.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Prikačeni fajlovi
 
Odgovor na temu

[es] :: Advocacy :: Linux prebacio 4%
(TOP topic, by flighter_022)
Strane: << < .. 142 143 144 145 146 147 148 149 150 151 ... Dalje > >>

[ Pregleda: 345506 | Odgovora: 3057 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.