Het afdrukken van de uitgebreide ASCII-code in java vanuit een geheel getal

public static void main(String[] args) 
{
int i=153;
int j=63;
System.out.println((char)i);
System.out.println((char)j);
}


OUTPUT:-
?
?

Ik heb een aantal ideeën waarom is dit vreemd uitgang.. Maar kan iemand mij een idee dat ik kan afdrukken van de uitgebreide ASCIIs ook..

InformationsquelleAutor Swayambhu | 2014-03-08

 

4 Replies
  1. 17

    ASCII 153 (0x99) is verschillend van Unicode U+0099 (teken).

    Oplossing

    Dit programma moet doen wat je van plan bent het te doen:

    public class ExtendedAscii {
        public static final char[] EXTENDED = { 0x00C7, 0x00FC, 0x00E9, 0x00E2,
                0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF,
                0x00EE, 0x00EC, 0x00C4, 0x00C5, 0x00C9, 0x00E6, 0x00C6, 0x00F4,
                0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00A2,
                0x00A3, 0x00A5, 0x20A7, 0x0192, 0x00E1, 0x00ED, 0x00F3, 0x00FA,
                0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x2310, 0x00AC, 0x00BD,
                0x00BC, 0x00A1, 0x00AB, 0x00BB, 0x2591, 0x2592, 0x2593, 0x2502,
                0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557,
                0x255D, 0x255C, 0x255B, 0x2510, 0x2514, 0x2534, 0x252C, 0x251C,
                0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566,
                0x2560, 0x2550, 0x256C, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559,
                0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588,
                0x2584, 0x258C, 0x2590, 0x2580, 0x03B1, 0x00DF, 0x0393, 0x03C0,
                0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4,
                0x221E, 0x03C6, 0x03B5, 0x2229, 0x2261, 0x00B1, 0x2265, 0x2264,
                0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A,
                0x207F, 0x00B2, 0x25A0, 0x00A0 };
    
        public static final char getAscii(int code) {
            if (code >= 0x80 && code <= 0xFF) {
                return EXTENDED[code - 0x7F];
            }
            return (char) code;
        }
    
        public static final void printChar(int code) {
            System.out.printf("%c%n", getAscii(code));
        }
    
        public static void main(String[] args) {
            printChar(153);
            printChar(63);
        }
    }

    Output:

    Ü

    ?

    Zoals je kunt zien aan de uitvoer hierboven, is het de bedoeling teken wordt afgedrukt.


    Uitbreiding van het Concept

    Ook, ik schreef een programma waarmee de Unicode-waarden voor de uitgebreide Ascii. Zoals u kunt zien in de onderstaande uitvoer, veel karakters hebben moeite wordt weergegeven als native char.

    Code:

    public class ExtendedAscii {
        public static final char[] EXTENDED = { 0x00C7, 0x00FC, 0x00E9, 0x00E2,
                0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF,
                0x00EE, 0x00EC, 0x00C4, 0x00C5, 0x00C9, 0x00E6, 0x00C6, 0x00F4,
                0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00A2,
                0x00A3, 0x00A5, 0x20A7, 0x0192, 0x00E1, 0x00ED, 0x00F3, 0x00FA,
                0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x2310, 0x00AC, 0x00BD,
                0x00BC, 0x00A1, 0x00AB, 0x00BB, 0x2591, 0x2592, 0x2593, 0x2502,
                0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557,
                0x255D, 0x255C, 0x255B, 0x2510, 0x2514, 0x2534, 0x252C, 0x251C,
                0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566,
                0x2560, 0x2550, 0x256C, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559,
                0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588,
                0x2584, 0x258C, 0x2590, 0x2580, 0x03B1, 0x00DF, 0x0393, 0x03C0,
                0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4,
                0x221E, 0x03C6, 0x03B5, 0x2229, 0x2261, 0x00B1, 0x2265, 0x2264,
                0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A,
                0x207F, 0x00B2, 0x25A0, 0x00A0 };
    
        public static void main(String[] args) {
            for (char c : EXTENDED) {
                System.out.printf("%s, ", new String(Character.toChars(c)));
            }
        }
    }

    Output:

    Ç, ü, é, å, ä, à, å, ç, é, ë, è, ï, ö, ì, Ä, Å, É, æ, Æ, ô, ö, ò, ê, ë, y, Ö, Ü, ¢, £, ¥, ?, ƒ, á, í, ó, ú, û, Ñ, ª, º, ¿, ?, ,½, ¼ , ¡, “, “, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ß, ?, ?, ?, ?, µ, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ±, ?, ?, ?, ?, ÷, ?, °, ?, ·, ?, ?, 2, ?,  ,

    Referentie Tabel: (bron)

    Dec Hex Unicode     Char    Description
    --- --- -------     ----    -----------------------------------
    128 80  U+00C7      Ç   latin capital letter c with cedilla
    129 81  U+00FC      ü   latin small letter u with diaeresis
    130 82  U+00E9      é   latin small letter e with acute
    131 83  U+00E2      â   latin small letter a with circumflex
    132 84  U+00E4      ä   latin small letter a with diaeresis
    133 85  U+00E0      à   latin small letter a with grave
    134 86  U+00E5      å   latin small letter a with ring above
    135 87  U+00E7      ç   latin small letter c with cedilla
    136 88  U+00EA      ê   latin small letter e with circumflex
    137 89  U+00EB      ë   latin small letter e with diaeresis
    138 8A  U+00E8      è   latin small letter e with grave
    139 8B  U+00EF      ï   latin small letter i with diaeresis
    140 8C  U+00EE      î   latin small letter i with circumflex
    141 8D  U+00EC      ì   latin small letter i with grave
    142 8E  U+00C4      Ä   latin capital letter a with diaeresis
    143 8F  U+00C5      Å   latin capital letter a with ring above
    144 90  U+00C9      É   latin capital letter e with acute
    145 91  U+00E6      æ   latin small ligature ae
    146 92  U+00C6      Æ   latin capital ligature ae
    147 93  U+00F4      ô   latin small letter o with circumflex
    148 94  U+00F6      ö   latin small letter o with diaeresis
    149 95  U+00F2      ò   latin small letter o with grave
    150 96  U+00FB      û   latin small letter u with circumflex
    151 97  U+00F9      ù   latin small letter u with grave
    152 98  U+00FF      ÿ   latin small letter y with diaeresis
    153 99  U+00D6      Ö   latin capital letter o with diaeresis
    154 9A  U+00DC      Ü   latin capital letter u with diaeresis
    155 9B  U+00A2      ¢   cent sign
    156 9C  U+00A3      £   pound sign
    157 9D  U+00A5      ¥   yen sign
    158 9E  U+20A7         peseta sign
    159 9F  U+0192      ƒ   latin small letter f with hook
    160 A0  U+00E1      á   latin small letter a with acute
    161 A1  U+00ED      í   latin small letter i with acute
    162 A2  U+00F3      ó   latin small letter o with acute
    163 A3  U+00FA      ú   latin small letter u with acute
    164 A4  U+00F1      ñ   latin small letter n with tilde
    165 A5  U+00D1      Ñ   latin capital letter n with tilde
    166 A6  U+00AA      ª   feminine ordinal indicator
    167 A7  U+00BA      º   masculine ordinal indicator
    168 A8  U+00BF      ¿   inverted question mark
    169 A9  U+2310         reversed not sign
    170 AA  U+00AC      ¬   not sign
    171 AB  U+00BD      ½   vulgar fraction one half
    172 AC  U+00BC      ¼   vulgar fraction one quarter
    173 AD  U+00A1      ¡   inverted exclamation mark
    174 AE  U+00AB      «   left-pointing double angle quotation mark
    175 AF  U+00BB      »   right-pointing double angle quotation mark
    176 B0  U+2591         light shade
    177 B1  U+2592         medium shade
    178 B2  U+2593         dark shade
    179 B3  U+2502         box drawings light vertical
    180 B4  U+2524         box drawings light vertical and left
    181 B5  U+2561         box drawings vertical single and left double
    182 B6  U+2562         box drawings vertical double and left single
    183 B7  U+2556         box drawings down double and left single
    184 B8  U+2555         box drawings down single and left double
    185 B9  U+2563         box drawings double vertical and left
    186 BA  U+2551         box drawings double vertical
    187 BB  U+2557         box drawings double down and left
    188 BC  U+255D         box drawings double up and left
    189 BD  U+255C         box drawings up double and left single
    190 BE  U+255B         box drawings up single and left double
    191 BF  U+2510         box drawings light down and left
    192 C0  U+2514         box drawings light up and right
    193 C1  U+2534         box drawings light up and horizontal
    194 C2  U+252C         box drawings light down and horizontal
    195 C3  U+251C         box drawings light vertical and right
    196 C4  U+2500         box drawings light horizontal
    197 C5  U+253C         box drawings light vertical and horizontal
    198 C6  U+255E         box drawings vertical single and right double
    199 C7  U+255F         box drawings vertical double and right single
    200 C8  U+255A         box drawings double up and right
    201 C9  U+2554         box drawings double down and right
    202 CA  U+2569         box drawings double up and horizontal
    203 CB  U+2566         box drawings double down and horizontal
    204 CC  U+2560         box drawings double vertical and right
    205 CD  U+2550         box drawings double horizontal
    206 CE  U+256C         box drawings double vertical and horizontal
    207 CF  U+2567         box drawings up single and horizontal double
    208 D0  U+2568         box drawings up double and horizontal single
    209 D1  U+2564         box drawings down single and horizontal double
    210 D2  U+2565         box drawings down double and horizontal single
    211 D3  U+2559         box drawings up double and right single
    212 D4  U+2558         box drawings up single and right double
    213 D5  U+2552         box drawings down single and right double
    214 D6  U+2553         box drawings down double and right single
    215 D7  U+256B         box drawings vertical double and horizontal single
    216 D8  U+256A         box drawings vertical single and horizontal double
    217 D9  U+2518         box drawings light up and left
    218 DA  U+250C         box drawings light down and right
    219 DB  U+2588         full block
    220 DC  U+2584         lower half block
    221 DD  U+258C         left half block
    222 DE  U+2590         right half block
    223 DF  U+2580         upper half block
    224 E0  U+03B1      α   greek small letter alpha
    225 E1  U+00DF      ß   latin small letter sharp s
    226 E2  U+0393      Γ   greek capital letter gamma
    227 E3  U+03C0      π   greek small letter pi
    228 E4  U+03A3      Σ   greek capital letter sigma
    229 E5  U+03C3      σ   greek small letter sigma
    230 E6  U+00B5      µ   micro sign
    231 E7  U+03C4      τ   greek small letter tau
    232 E8  U+03A6      Φ   greek capital letter phi
    233 E9  U+0398      Θ   greek capital letter theta
    234 EA  U+03A9      Ω   greek capital letter omega
    235 EB  U+03B4      δ   greek small letter delta
    236 EC  U+221E         infinity
    237 ED  U+03C6      φ   greek small letter phi
    238 EE  U+03B5      ε   greek small letter epsilon
    239 EF  U+2229         intersection
    240 F0  U+2261         identical to
    241 F1  U+00B1      ±   plus-minus sign
    242 F2  U+2265         greater-than or equal to
    243 F3  U+2264         less-than or equal to
    244 F4  U+2320         top half integral
    245 F5  U+2321         bottom half integral
    246 F6  U+00F7      ÷   division sign
    247 F7  U+2248         almost equal to
    248 F8  U+00B0      °   degree sign
    249 F9  U+2219         bullet operator
    250 FA  U+00B7      ·   middle dot
    251 FB  U+221A         square root
    252 FC  U+207F         superscript latin small letter n
    253 FD  U+00B2      ²   superscript two
    254 FE  U+25A0         black square
    255 FF  U+00A0      no-break space
    • Dit is alleen geldig voor één pagina van de code, specifiek CP437. Dat betekent dat zijn de gelijkwaardigheid in een console op de US-engels windows, maar zal niet werken in UTF-8 xterm op Linux of CP850 console in West-Europa, enz. Je moet weten dat de codering die uw terminal gebruikt.
    • Is er een reden dat u gebruik char[] voor EXTENDED dan int[]?
    • Omdat char is 2 bytes, terwijl een int is 4 bytes. Dit vertaalt zich naar een kleinere geheugen footprint. ref
    • Ok. Dat is een interessant punt.
    • Dankjewel voor je goede antwoord. Ik veranderde mijn laatste code waar ik aangepast uw code de regel: de terugkeer UITGEBREID[code – 0x7F]; om terug te keren VERLENGD[code – 0x80]; .- Ik ben niet zeker of het een fout is hier, of op mijn zij, met mijn inbreng.
    • De resultaten zijn voor mij een uit. Input 128 -> uitgang ü

  2. 4

    “Extended ASCII” is vaag. Er zijn vele uitbreidingen naar ASCII dat het definiëren van glyphs voor de byte-waarden tussen 127 en 255. Deze worden aangeduid als code pagina ‘ s. Enkele van de meer voorkomende zijn:

    • CP437, de standaard op de originele IBM Pc ‘ s
    • ISO-8859-1 ook bekend als Code page 1252, de gebruikte codering voor de meeste West-Europese versies van Windows voor alles, maar de console

    U echt nodig om te weten wat tekencodering uw terminal verwacht, anders zul je eindigen afdrukken afval. In Java moet je in staat zijn om de waarde van Charset.defaultCharset() (Charset documentatie).

    Er zijn veel meer manieren om het coderen van tekens dan slechts in een enkel-byte “extended ASCII code’ s. Unicode vereist veel meer code punten dan 255, dus er zijn verschillende vaste breedte en een variabele breedte coderingen die worden vaak gebruikt. Deze pagina lijkt te worden een goede gids voor karakter codering in Java.

  3. 0
    String iChar = new Character((char)i).toString(); 
    String jChar = new Character((char)j).toString(); 
    
    System.out.println(iChar);
    System.out.println(jChar);
    • Je kan waarschijnlijk gemakkelijk doen: String.format("%c", i)
    • ik heb je voorbeeld, maar voor mij is de output is nog ? ? op eclipse console, mis ik iets?
    • U het zeker? 153 is een aantal bijzondere karakter, 63 “?”, check dit, probeer af te drukken 97 en 98, die moeten worden “a” en “b”
    • Ja, moet ik bepaalde instellingen wijzigen op Eclipse, om te zien het speciale teken wordt afgedrukt met behulp van sysout op Eclipse console?
    • Nee, er niets van doen met de console, kunt u uw huidige code? Ik heb het geprobeerd, het werkt prima.
    • Java is het interpreteren van de integer waarden als de Unicode hun gelijk. U moet de kaart de Unicode-waarden voor de Uitgebreide ASCII-waarden. Zie mijn reactie hieronder.
    • Ik heb ook geprobeerd in ecclipse en het komt niet… Het probleem is dat java ondersteunt ascii-code 0-127. Buiten dat het kan of niet te tonen in de console.. Niets te maken met ecclipse instelling..

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *