Warning Nu esti autentificat. Te rog autentifica-te sau inregistreaza-te pentru a avea acces la toate facilitatile forumului.
SkullBox  
Noiembrie 23, 2008, 04:22:07 pm
Bine ai venit, Vizitator. Trebuie să te autentifici sau să îţi creezi un cont.
Ai pierdut sau nu ai primit emailul care conţine codul de activare al contului?

Autentifică-te cu numele de utilizator, parola şi precizează durata sesiunii.
Noutăţi: Gadgetinho - IT cu zambetul pe buze
 
 SkullBoxDirector webTutoriale  Pagina principală   Ajutor Caută Autentificare Creează un cont  
Pagini: [1]
  Imprimă  
Subiect: UNICODE vs ASCII  (Citit de 1231 ori)
0Utilizatori şi 1 Vizitatori
!_30
Hero Member
*****
Deconectat Deconectat

Gen: Bărbat
Mesaje: 563



WWW
UNICODE vs ASCII, Noiembrie 24, 2006, 09:06:21 pm

Ca tot m'am apucat sa dau ochi cu Java , ce vad . Java asta , foloseste setul de caractere UNICODE nativ pentru reprezentarea caracterelor.
UNICODE inlocuieste vechiul ASCII code .. care putea desemna 256 de caractere.

Intrebarea mea este : sa inteleg ca in ASCII ( adica stiu ) , sunt 256 de numere , fiecare numar desemneaza un caracter si in UNICODE peste 65000 ( pe acolo ) , fiecare desemneaza un caracter , dar normal mult mai multe caractere pot fi bagate acolo.

De ce este nevoie ca fiecare caracter sa aiba un cod , si cam ce face UNICODE si ASCII asta ? Utlizare practica ? Nu poti pune in memorie direct "a" , sau trebuie sa pui 65 ( ASCII ) ..

Poate ( sigur cu ajutoru vostru ) ma dumiresc , ce si cum . Winking
Memorat

We live in a very special time in the evolution of the universe: the time at which we can observationally verify that we live in a very special time in the evolution of the universe!" (John Timmer)
Blog
Agkelos
Administrator
Hero Member
*****
Conectat Conectat

Gen: Bărbat
Mesaje: 4759



WWW
UNICODE vs ASCII, Noiembrie 24, 2006, 09:52:37 pm

E bine ca te-ai apucat de Java... aflu si eu chestii noi care nu le stiam pana acum :mrgreen:

Cu diferentele dinter UNICODE si ASCII cred ca cel mai bine te poate lamuri suri pentru ca pe SkullBox el intelege cel mai bine chestiile low-level dar o explicatie scurta, cat sa-ti faci o idee despre ce se intampla ar fi urmatoarea:

La inceput, cu mult timp in urma, procesoarele aveau banda de lucru de 8 biti si dupa cum stii cel mai mare numar care poate fi reprezentat pe 8 biti este 255 (in total 256 de elemente). Cum evolutia sistemelor de calcul trebuia sa includa si texte s-a facut o conventie conform careia cand e vorba de texte fiecarui numar care poate fi reprezentat pe 8 biti i se asociaza un caracter. Au fost mai multe variante dar cea mai folosita e ASCII (American Standard Code for Information Interchange) care contine atat caractere printabile cat si caractere neprintabile.
Cum tehnologia a evoluat mai mult si deja de cativa ani buni se folosesc procesoare pe 32 de biti s-a scos un nou cod care sa inlocuiasca ASCII si spre deosebire de acesta sa aduca cateva inovatii, si anume suport pentru caractere chirilice. Adica, in unicode se pot adauga si caractere dintr-un alt alfabet decat cel american cum ar fi diacriticele, hieroglifele sau simbolurile arhi-cunoscute pentru copyright, marca inregistrata, euro, yeni etc.

Asta ar fi marea diferenta. Bineinteles se poate filosofa mult pe tema unicode, pe subseturile unicod si problemele care apar in cazul hieroglifelor... dar pentru asta trebuie consultata documentatia de specialitate  :read:
Memorat


suri
Full Member
***
Deconectat Deconectat

Mesaje: 203


UNICODE vs ASCII, Noiembrie 24, 2006, 11:15:22 pm

Citat
De ce este nevoie ca fiecare caracter sa aiba un cod , si cam ce face UNICODE si ASCII asta ? Utlizare practica ? Nu poti pune in memorie direct "a" , sau trebuie sa pui 65 ( ASCII )

In memoria calculatoarelor actuale nu exista decat stari pozitionate in doua moduri, care noi le asociem cu cifrele 0 si 1. Nu exista litera "a". Fiecare litera este reprezentata printr-un numar, cum a spus OSHO. Cum stie ca este o litera, nu un numar ?  Din declaratia de tip din program. Deci, doar programul poate interpreta ce e aia, calculatorul nu.

Istoric, pentru reprezentarea literelor in comunicatii s-a folosit Codul Baudot, care era un cod pe 5 biti. Asta permitea teletransmisia cu o masina de scris cu o tastatura cu 32 de taste.
Deoarece 5 biti erau un numar nerotund, iar calculatoarele erau pe 8 biti (putere a lui 2) s-au alocat 8 biti pentru un caracter. La inceput prima teletransmisia si lucrurile nu erau foarte clare, asa ca s-a considerat ca din cei 8 biti unul sa fie bit de paritate, asa ca au ramas 7 biti. 7 biti corespundeau la 128 de caractere, cam multe pentru transmiterea mesajelor in limba engleza, asa ca s-au alocat 32 de "coduri" pentru comenzi (control = Ctrl), codul 127 a fost "rezervat", iar restul de 95 pentru litere mari, mici, cifre si semne uzuale. Asta a dus la tastatura moderna cu 95 de caractere. Tasta Ctrl pur si simplu forteaza la 0 primii 3 biti din caracterul generat de tastatura, obtinandu-se 32 de "comenzi". Asta s-a dorit, dar acum tastaturile nu merg asa, ele genereaza o secventa mult mai lunga decat 8 biti la o apsare. Literele generate au fost stocate in memoria calculatoarelor drept cifre, conform Codului ASCII. Ulterior s-a constatat ca "bitul de paritate" a ramas nefolosit si i s-au gasit diverse intrebuintari, rezultand "seturi de caractere extinse", dupa capul fiecarui producator.

Normal ca 256 de coduri (mai precis 95 + 128 = 223) nu puteau cuprinde nici macar toate caracterele europene, asa ca s-a trecut la UTF-8 care s-a dorit o extensie. Ideea a fost ca tot ce incepe cu un 0 este ASCII pe 1 octet, iar ce incepe cu 1 este extensie, pe 1, 2, 3 sau chiar 4 octeti, pe principiul: caracterele folosite des au cod mai scurt, iar cele rare mai lung.

Deoarece 32 biti e cam mult (nu sunt atatea caractere in lume) Unicode si UTF-16 incearca sa identifice caracterele existente si sa optimizeze alocarea codurilor. Deocamdata fiecare cu ideea lui...
Memorat



Exista 10 feluri de oameni: cei ce inteleg sistemul binar si cei ce nu.
!_30
Hero Member
*****
Deconectat Deconectat

Gen: Bărbat
Mesaje: 563



WWW
UNICODE vs ASCII, Noiembrie 24, 2006, 11:44:33 pm

Ya' OSHO , e destul de tare' Java .

Ca o paranteza , ce m'a surprins la Java : spre deosebire de C ( unde de exemplu , ca sa trimit un numar cu functia send() prin retea , turbai pana transformai numar->string in Java e mult mai usor).
Oricum Java adopta OOP si face codul mult mai inteligibil in limbaj realist , decat limbajele de programare procedurale ( gen Pascal / C ) . E greu sa te lamuresti de ce totul e un obiect ( din clasa ) , clase / inheritanta / arbori de clasa . Pentru ce am eu nevoie la o aplicatie simpla . Se observa mai tarziu , la un cod mai lung.


Practic , sa inteleg ( daca nu ma insel ) , ca in memoria RAM / hard , daca eu declar o variabila " variabila de tip string " si ii atribui valoarea a , in memorie se va aloca ( dinamic sau static , depinde de limbaj ) un loc ( depinde ce dimensiuni de biti va avea , de tipul de date referit ) , unde va aparea ceva de genu : 0110 0001. Daca ceva de genu este in memorie , de unde stie programul de ce tip este , cand ia valoarea din memorie ? mai are vrun identificator acolo , pe undeva ?. De exemplu , daca doresc sa pun intr'un string "leo" . Cum le va aseza ? unul langa altu ? si deoarece stie ca e string ( cu ceva identificator ) in fata ( si fiind pe 8 biti ) va lua la fiecare 8 biti 0 si 1 aceia , si va vedea ce string iese. Si ca sa faca diferenta unde se termina stringul va pune un cacarter '' si unde vede asta se opreste ..

Sa inteleg ca in UNICODE , este ceva gen ASCII , insa in loc de 256 de caractere poti pune mai multe . Practic , ASCII / UNICODE / UTF-16 , sunt procedee / idei , prin care programul poate implementa in memoria calculatoarului niste caractere ( in 0 si 1 ) , si apoi le poate folosi in scopurile programului . ASCII -> 0 1 .. -> ASCII -> variabila ( lucru cu variabila ).
Memorat

We live in a very special time in the evolution of the universe: the time at which we can observationally verify that we live in a very special time in the evolution of the universe!" (John Timmer)
Blog
3Nigma
Hero Member
*****
Deconectat Deconectat

Gen: Bărbat
Mesaje: 969


SkullBox Guardian


WWW
UNICODE vs ASCII, Noiembrie 25, 2006, 12:03:32 am

Unicode-ul,ASCII-ul si UTF-urile sunt practic tehnici de interpretare a memoriei[este mult mai usor sa lucram cu a b,c decat sa lucram cu reprezentarea lor in sistem binar[cum erau vechiile sisteme COBOL si Siris -aici e domeniu lui suri banuiesc Smile ],nu?]. Ai intrebat la un moment dat de unde stie programul ce tip de data este... ei bine..cand ii de tip string variabila stringului este defapt un pointer la locul unde in memorie incepe inmagazinarea continutului stringului.Compilatorul ,cand este nevoit sa citeasca dintr-o zona alocata,incepe de la pointerul pe care-l indica variabila si grupeaza 8 cate 8 biti ... apoi ii interpreteaza...la bite-ul '' reprezentarea se opreste!

Compilatorul stie ce se afla la pozitia(locatia de memorie respectiva) aia dupa modul de declarare a variabilelor...

stringuri->necesita zona extinsa de memorie
integere -> zona delimitata
etc etc etc

Totul este o chestie de interpretare... in acest mod ai putea face si tu un algoritm de 'interpretare' pe cati biti vrei tu ... deja atingem tehnici de criptografie Tongue
Memorat


Search for knowledge in the darkest places and in the blackest hours! You might get lucky and find more than you are looking for...
suri
Full Member
***
Deconectat Deconectat

Mesaje: 203


UNICODE vs ASCII, Noiembrie 25, 2006, 12:49:52 am

@!_30: Da, in memorie este asa cum zici. Valoarea aia este "interpretata" de program conform declaratie de tip a variabilei (sau constantei) care este acolo. La stringuri programul "stie" cat de lung e stingul. La constante pur si simplu se numara octetii cand este declarata, iar la variabile tu trebuie sa declari cat este lungimea daca variabila e de tip string.
Stringurile se pun caracter dupa caracter in zona de memorie contigua. Memoria este citita pe blocuri (cat incape in cache-urile procesorului). Procesorul separa apoi cati octeti ii spune programul ca are stringul.

@3Nigma: COBOL era un limbaj de nivel inalt, exact ca C-ul, doar ca era orientat spre business. De exemplu avea tipuri de variabile care tineau intregii (sau virgula fixa) de orice marime, nu era o problema sa reprezinti un milion de milioane de parai si 57 de centi, ceea ce pe un integer nu merge. Pentru economie, pentru fiecare cifra zecimala se foloseau 4 biti si reprezentarea BCD, se zicea "impachetat". Deoarece se lucra mult cu imprimanta, fiecare cifra putea fi tinuta pe cate un octet, se spunea "despachetat" = string. Sigur ca nu se puteau face calcule cu astea, numerele respective trebuiau convertite in binar, se spunea "computational". Nu stia ce e aia "baza de date" Big grin  Programai tu, manual, un simulacru de "baza de date". Bineinteles ca nu stia ce era aia "sinus". Eu n-am programat niciodata in COBOL, dar stiam ce poate, ca sa pot comanda celor ce faceau cand era nevoie.

SIRIS era un sistem de operare pe 16 biti. ASSIRIS era asamblorul lui, exact ceea ce se intelege acum prin "x86 Assembler" la IBM-PC-urile noastre. Nici vorba de cod masina. Totusi, calculatoarele alea erau mai simple, nu aveau stiva. Adica nu aveau stiva implementata hard, procesorul nu avea registre de tip "stack pointer". Nimic insa nu te impiedica sa folosesti un registru "normal" cu care sa simulezi o stiva, doar ca trebuia sa incrementezi/decrementezi tu registrul, manual. Nu era insa greu sa-ti scrii propriile tale rutine PUSH, POP si celelalte.
Memorat



Exista 10 feluri de oameni: cei ce inteleg sistemul binar si cei ce nu.
3Nigma
Hero Member
*****
Deconectat Deconectat

Gen: Bărbat
Mesaje: 969


SkullBox Guardian


WWW
UNICODE vs ASCII, Noiembrie 25, 2006, 08:23:54 am

@suri: am vorbit in necunosinta de cauza... faza e ca si eu invat acum despre sistemele alea si vreau sa am habar despre ce o fost ... poate ma justific asa...  Oops
[OFFTOPIC]suri ai lucrat cu cartele ? Stii ... cartele din alea care fiecare cartela reprezenta o valoare...si carai programul tau cu masina la un centru informatic unde iti derula programul..n fine... cred ca stii despre ce vorbesc... ai lucrat cu alea? Am un oarecare respect pentru acei programatori...poate din mila fata de conditiile in care lucrau +ca  sunt curios Smile [/OFFTOPIC]
Memorat


Search for knowledge in the darkest places and in the blackest hours! You might get lucky and find more than you are looking for...
tot_zeu
Full Member
***
Deconectat Deconectat

Mesaje: 152


UNICODE vs ASCII, Martie 07, 2007, 05:06:44 pm

Unicode permite mult mai multe caractere (avantajul celor 32 de biti) cred ca s au inclus si alte seturi de caractere de ex chirilice
Memorat
HostGator
Newbie
*
Mesaje: Multe

Reclamă cu aligatori
 

Ai auzit de aligatorul care ofera hosting?
 
   
Pagini: [1]
  Imprimă  
 
Schimbă forumul:  

Creat cu MySQL Creat cu PHP Ethical hacking and programming community Director web romanesc cu inscriere gratuita Validat cu XHTML 1.0! Validat cu CSS!
IPFind, FAQDB, LAMP.ro, Good Proxy, Aberez.EU, RoFreeSBIE, ShockingSoft.com, HostVision, Invatam.net, PC Troubleshooting, Curs valutar online
Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC
Traducerea în limba română © 2006-2007 www.smf.ro