అక్షర ఎన్కోడింగ్ అంటే ఏమిటి
ఎన్కోడింగ్ అనేది ఒక ఒప్పందం: “65 అనే సంఖ్య A అక్షరాన్ని సూచిస్తుంది”. మీరు టెక్స్ట్ రాసినప్పుడు, ప్రోగ్రామ్ ఆ సంఖ్యలను నిల్వ చేస్తుంది; మరొకరు దాన్ని తెరిచినప్పుడు, వారి ప్రోగ్రామ్ అదే ఒప్పందంతో వాటిని మళ్లీ అక్షరాలుగా అనువదిస్తుంది. ఇద్దరూ ఒకే పట్టికను వాడకపోతే, టెక్స్ట్ తప్పుగా వస్తుంది.
రెండు ఆలోచనలను వేరుచేయాలి. ఒకటి అక్షర సమితి, అంటే ఏ సంఖ్య ఏ చిహ్నానికి సరిపోతుందనే జాబితా. రెండోది ఆ సంఖ్యలు బైట్లలో ఎలా నిల్వ అవుతాయి. ASCII లో ఈ రెండూ సాధారణంగా ఒకటే; Unicode లో కావు, అక్కడ UTF-8 వస్తుంది.
ASCII: 7 బిట్ల 128 అక్షరాలు
ASCII (American Standard Code for Information Interchange) 1960లలో ప్రమాణీకరించబడింది. ఇది 7 బిట్లు వాడుతుంది, అంటే 2 యొక్క 7వ ఘాతం = 128 కోడ్లు, 0 నుండి 127 వరకు. వాటిలో 33 నియంత్రణ అక్షరాలు (0 నుండి 31, 127), 95 ముద్రించదగినవి (32 నుండి 126, ఖాళీతో సహా).
ఇందులో ఉచ్చారణ గుర్తులున్న అక్షరాలు, ñ, యూరో గుర్తు లేవు: ఇది ఇంగ్లీష్ కోసం రూపొందించబడింది. తర్వాత ఇతర పట్టికలు ఎందుకు అవసరమయ్యాయో అది వివరిస్తుంది.
| నియంత్రణ అక్షరం | డెసిమల్ | హెక్సాడెసిమల్ | బైనరీ (7 బిట్లు) | దేనికి ఉపయోగం |
|---|---|---|---|---|
| శూన్యం (NUL) | 0 | 00 | 0000000 | అనేక భాషల్లో స్ట్రింగ్ ముగింపును గుర్తిస్తుంది |
| అడ్డు ట్యాబ్ (TAB) | 9 | 09 | 0001001 | తర్వాతి ట్యాబ్ స్టాప్కు దూకుతుంది |
| కొత్త లైన్ (LF) | 10 | 0A | 0001010 | తర్వాతి లైన్కు దిగుతుంది |
| క్యారేజ్ రిటర్న్ (CR) | 13 | 0D | 0001101 | లైన్ ప్రారంభానికి తిరిగి వస్తుంది |
| ఎస్కేప్ (ESC) | 27 | 1B | 0011011 | నియంత్రణ క్రమాలను ప్రారంభిస్తుంది |
| ఖాళీ (స్పేస్) | 32 | 20 | 0100000 | ముద్రించదగిన మొదటి అక్షరం |
| తొలగింపు (DEL) | 127 | 7F | 1111111 | అక్షరాన్ని తొలగిస్తుంది |
గుర్తుంచుకోవలసిన సంబంధాలు
పట్టిక యాదృచ్ఛికంగా క్రమపరచబడలేదు. కొన్ని క్రమబద్ధతలతో మీరు కోడ్లను జ్ఞాపకంతో చదవవచ్చు.
- “0” నుండి “9” వరకు అంకెలు 48 నుండి 57 వరకు ఉంటాయి (హెక్సాడెసిమల్లో 30 నుండి 39). ఒక అంకె విలువ దాని కోడ్ నుండి 48 తీసివేయగా వస్తుంది: “7” అంటే 55, 55 − 48 = 7.
- పెద్ద అక్షరాలు 65 (“A”) నుండి 90 (“Z”) వరకు, చిన్న అక్షరాలు 97 (“a”) నుండి 122 (“z”) వరకు ఉంటాయి.
- పెద్ద అక్షరానికి, దాని చిన్న అక్షరానికి మధ్య తేడా ఎల్లప్పుడూ 32: “A” = 65, “a” = 97; “C” = 67, “c” = 99. బైనరీలో ఒక్క బిట్ మాత్రమే మారుతుంది: “A” కు 01000001, “a” కు 01100001.
- ఒక పెద్ద అక్షరం వర్ణమాలలో ఎన్నో స్థానంలో ఉందో తెలుసుకోవడానికి 64 తీసివేయండి: “C” 67, 67 − 64 = 3, మూడో అక్షరం.
- అన్ని పెద్ద అక్షరాల కోడ్లు (65 నుండి 90) చిన్న అక్షరాల కోడ్ల (97 నుండి 122) కంటే తక్కువ కాబట్టి, “కోడ్ ప్రకారం” వర్ణమాల క్రమం “Zebra” ను “apple” కంటే ముందు ఉంచుతుంది. సరిగ్గా క్రమపరచడానికి చాలా ప్రోగ్రామ్లకు ప్రత్యేక పోలిక ఎంపిక అవసరం.
లైన్ ముగింపు: LF, CR, CRLF
కొత్త లైన్ సరళంగా అనిపిస్తుంది, కానీ సిస్టమ్ను బట్టి వేరేలా రాస్తారు. Unix, Linux, macOS ఒకే అక్షరం LF (10) వాడతాయి. Windows వరుసగా రెండు వాడుతుంది, CR, LF (13, 10), వాటిని CRLF అంటారు. పాత టెలిటైప్లకు రెండు వేర్వేరు ఆదేశాలు కావాలి: క్యారేజ్ను ప్రారంభానికి తిప్పడం, కాగితాన్ని ఒక లైన్ ముందుకు జరపడం.
ఈ తేడా వల్లే కొన్ని ఫైళ్లు ప్రాథమిక ఎడిటర్లో అంతా ఒకే లైన్లో కనిపిస్తాయి, లేదా ప్రతి వరుస చివర వింత గుర్తు కనిపిస్తుంది. ఒక్కోదానికి ఏ కోడ్ ఉందో తెలుసుకోవాలంటే, ASCII పట్టిక శోధనలో LF లేదా CR అని రాయండి.
“విస్తరించిన ASCII” ప్రమాణం కాదు
ఒక బైట్కు 8 బిట్లు ఉన్నాయి, ASCII 7 మాత్రమే వాడుతుంది, కాబట్టి 128 ఖాళీ కోడ్లు (128 నుండి 255) మిగిలాయి, ప్రతి తయారీదారు, ప్రాంతం వాటిని తమ పద్ధతిలో నింపాయి. దీన్ని “విస్తరించిన ASCII” అంటారు, కానీ ఒకే పట్టిక లేదు: కోడ్ పేజీలు అనే చాలా పట్టికలు ఉన్నాయి. బాగా తెలిసిన రెండు Latin-1 (ISO-8859-1), అందులో é కోడ్ 233, Windows-1252, ఇది దాదాపు అలాంటిదే కానీ 128 నుండి 159 కోడ్లలో తేడాలతో (ఉదాహరణకు అక్కడే యూరో ఉంది).
సమస్య ఏమిటంటే 233 కోడ్ ఒక పట్టికలో “é”, మరో పట్టికలో వేరొకటి. ఒక పట్టికతో రాసి, మరో పట్టికతో చదివిన టెక్స్ట్ చెత్తగా కనిపించేది. ఆ గందరగోళాన్ని అంతం చేయడానికి Unicode పుట్టింది.
Unicode, UTF-8
Unicode ప్రపంచంలోని దాదాపు అన్ని లిపి వ్యవస్థల ప్రతి అక్షరానికి, ఇంకా చిహ్నాలు, ఎమోజీలకు కోడ్ పాయింట్ అనే ప్రత్యేక సంఖ్యను కేటాయిస్తుంది. ఇప్పుడు దానిలో 150,000 కంటే ఎక్కువ అక్షరాలు ఉన్నాయి. దాన్ని U+ ఉపసర్గతో, హెక్సాడెసిమల్లో రాస్తారు: “A” U+0041, “ñ” U+00F1, యూరో U+20AC, నవ్వే ముఖం ఎమోజీ U+1F600. మొదటి 128 కోడ్ పాయింట్లు సరిగ్గా ASCII వే.
UTF-8 ఆ సంఖ్యలను బైట్లలో నిల్వ చేసే అత్యంత ఎక్కువగా వాడే రూపం, అక్షరాన్ని బట్టి 1 నుండి 4 బైట్లు వాడుతుంది. ASCII 128 ఎప్పటిలాగే ఒకే బైట్ తీసుకుంటాయి, కాబట్టి ASCII టెక్స్ట్ చెల్లుబాటయ్యే UTF-8 టెక్స్ట్ కూడా. మిగతావి ఎక్కువ బైట్లు తీసుకుంటాయి.
| అక్షరం | కోడ్ పాయింట్ | UTF-8 లో బైట్లు | బైట్లు (హెక్సాడెసిమల్) |
|---|---|---|---|
| A | U+0041 | 1 | 41 |
| é | U+00E9 | 2 | C3 A9 |
| ñ | U+00F1 | 2 | C3 B1 |
| € | U+20AC | 3 | E2 82 AC |
| 😀 | U+1F600 | 4 | F0 9F 98 80 |
“ñ” బదులు “ñ” ఎందుకు కనిపిస్తుంది
ఇది అత్యంత సాధారణ లోపం, దానికి ఖచ్చితమైన వివరణ ఉంది. UTF-8 లో ñ రెండు బైట్లు: C3, B1. ప్రోగ్రామ్ టెక్స్ట్ Latin-1 లో ఉందని భావిస్తే, ప్రతి బైట్ను ఒక అక్షరంగా చదువుతుంది: C3 “Ô, B1 “±”. ఫలితం: “ñ”. “é” తో కూడా అదే జరుగుతుంది, అది “é” గా కనిపిస్తుంది, “canción” అనేది “canción” గా కనిపిస్తుంది.
పరిష్కారం దాదాపు ఎల్లప్పుడూ ఫైల్ను UTF-8 గా తెరవమని ప్రోగ్రామ్కు చెప్పడమే (టెక్స్ట్ ఎడిటర్లో లేదా స్ప్రెడ్షీట్ దిగుమతి సెట్టింగ్లో). దీనికి విరుద్ధంగా, Latin-1 లోని టెక్స్ట్ను UTF-8 గా చదివితే, ప్రశ్నార్థక గుర్తుతో ఉన్న వజ్రాలు కనిపిస్తాయి, ఎందుకంటే ఆ విడి బైట్లు చెల్లుబాటయ్యే UTF-8 క్రమాలను ఏర్పరచవు.
ASCII పట్టికను, కన్వర్టర్ను ఎలా వాడాలి
“ASCII టేబుల్” సాధనం 128 అక్షరాలను డెసిమల్, హెక్సాడెసిమల్, ఆక్టల్, బైనరీ కోడ్తో, నియంత్రణ అక్షరాల పేరుతో చూపుతుంది.
- దాని వరుసను కనుగొనడానికి శోధనలో ఒక అక్షరం, కోడ్ లేదా నియంత్రణ అక్షరం పేరు (ఉదాహరణకు A, 65, 41 లేదా LF) రాయండి.
- ఒక సమూహాన్ని మాత్రమే చూడటానికి ఫిల్టర్ బటన్లను (కంట్రోల్, అంకెలు, పెద్ద అక్షరాలు, చిన్న అక్షరాలు, చిహ్నాలు) వాడండి.
- మార్చడానికి, “టెక్స్ట్” లో టెక్స్ట్ రాసి, ఫార్మాట్ (దశాంశం, హెక్సాడెసిమల్, అష్టాంశం లేదా బైనరీ) ఎంచుకోండి: కింద కోడ్లు కనిపిస్తాయి. “Hola” డెసిమల్లో 72 111 108 97, హెక్సాడెసిమల్లో 48 6F 6C 61 ఇస్తుంది.
- రివర్స్లో కూడా చేయవచ్చు: “కోడ్లు” లో ఖాళీలు లేదా కామాలతో వేరుచేసిన కోడ్లను పేస్ట్ చేస్తే టెక్స్ట్ తయారవుతుంది. హెక్సాడెసిమల్లో 0x41 వంటి ఉపసర్గలు అంగీకరించబడతాయి.
టెక్స్ట్లో ñ వంటి ASCII కాని అక్షరాలు ఉంటే, సాధనం తెలియజేసి వాటి Unicode కోడ్ను చూపుతుంది. UTF-8 లోని అసలు బైట్లను చూడటానికి “టెక్స్ట్ నుండి బైనరీ” వాడండి: ñ కు 11000011 10110001, 8 బిట్ల రెండు బైట్లు వస్తాయి. పరిమితులు: పట్టిక ప్రామాణిక ASCII ని మాత్రమే చూపుతుంది, విస్తరించినదాన్ని కాదు, అంతా మీ బ్రౌజర్లోనే లెక్కించబడుతుంది, టెక్స్ట్ను ఏ సర్వర్కూ పంపదు.
తరచుగా అడిగే ప్రశ్నలు
ASCII లో ఎన్ని అక్షరాలు ఉన్నాయి?
128, కోడ్లు 0 నుండి 127 వరకు, ఒక్కొక్కటి 7 బిట్లు. వాటిలో 33 నియంత్రణ అక్షరాలు, 95 ముద్రించదగినవి (ఖాళీతో సహా).
A, a అక్షరాల ASCII కోడ్ ఏమిటి?
“A” 65 (హెక్సాడెసిమల్లో 41, బైనరీలో 01000001), “a” 97 (హెక్సాడెసిమల్లో 61, బైనరీలో 01100001). వాటి మధ్య తేడా ఎల్లప్పుడూ 32.
ASCII కు, Unicode కు తేడా ఏమిటి?
ASCII లో ఇంగ్లీష్ కోసం రూపొందించిన 128 అక్షరాలు ఉన్నాయి. Unicode లో దాదాపు అన్ని భాషల, ఎమోజీల 150,000 కంటే ఎక్కువ అక్షరాలు ఉన్నాయి, దాని మొదటి 128 ASCII వే.
UTF-8 అంటే ఏమిటి?
ఇది Unicode టెక్స్ట్ను బైట్లలో నిల్వ చేసే అత్యంత ఎక్కువగా వాడే పద్ధతి. అక్షరానికి 1 నుండి 4 బైట్లు వాడుతుంది: ASCII ఒకటి, ñ రెండు, ఎమోజీ నాలుగు తీసుకుంటాయి.
నా టెక్స్ట్ “ñ” లేదా “é” ఎందుకు చూపుతోంది?
ఎందుకంటే UTF-8 లో సేవ్ చేసిన టెక్స్ట్ను Latin-1 గా చదువుతున్నారు. ఫైల్ను UTF-8 ఎన్కోడింగ్ సూచిస్తూ తెరవండి, సమస్య పరిష్కారమవుతుంది.