Utilizarea tabelelor ASCII extinse JAVA (Programare, Java, Turnare, Char, Ascii)

zdarsky.peter a intrebat.
a intrebat.

în aplicația mea am nevoie să obțin caractere din tabelul ASCII extins care este prezentat în imagine. Dar atunci când arunc valorile zecimale în char, obțin caractere diferite. Care este valoarea reală a acestor caractere în JAVA. Nu scriu caracterul pe consolă sau într-un fișier, ci doar în imagine.

private void generateAsciiMatrix()
{
    //32 - 255 are visible characters in ascii table
    for(int i = 32; i < 256; i++)
    {
        this.generateAsciiMatrix((char)i);
    }
}

private void generateAsciiMatrix(char letter)
{
    EBufferedImage character = new EBufferedImage(
            ImageClass.charToImage(letter, width, height));
    //...some code
}

public static BufferedImage charToImage(char c, int width, int height)
{
    BufferedImage off_Image = new BufferedImage(width, height,
                BufferedImage.TYPE_BYTE_GRAY);

    Graphics2D g2 = off_Image.createGraphics();
    g2.setColor(Color.black);
    g2.setBackground(Color.WHITE);  
    g2.clearRect(0, 0, width, height);  
    g2.setFont(new Font("Monospaced", Font.PLAIN, 12)); 
    g2.drawString(Character.toString(c), 0, height);
    saveImage(off_Image, "code" + (int)c);
    return off_Image;
}

Vă mulțumesc pentru ajutor și îmi cer scuze pentru engleza mea proastă 🙂

Comentarii

  • „Tabelul ASCII extins” este pur și simplu o cartografiere a valorilor octetului „deasupra ASCII” în simboluri pe un terminal (sau alt dispozitiv de redare). Altfel spus, este doar un dintre numeroasele pagini de cod pentru maparea valorilor de 128-255. Altfel spus, caracterul afișat depinde de ce îl afișează (de exemplu, sensul atribuit și „fontul”) și de alte reguli aplicabile (de exemplu, pagina de cod sau „limba”) pe care le aplică. – utilizator166390
  • Deci, cum pot forța programul meu java să folosească această pagină de cod ? –  > Por zdarsky.peter.
  • ro.wikipedia.org/wiki/List_of_Unicode_characters poate fi acest lucru vă poate ajuta,. –  > Por Smit.
  • Eu scriu caracterele doar pe imagine, iar apoi lucrez doar cu imaginea –  > Por zdarsky.peter.
  • @zdarsky.peter Adăugați asta la întrebarea: cum sunt sunt scrise/redate caracterele? – user166390
2 răspunsuri
zdarsky.peter

Soluția mea pentru această problemă este că am creat manual un char array cu acele caractere de care aveam nevoie

Comentarii

  • Aceasta este probabil o soluție bună, dar asigurați-vă că le codificați ca puncte Unicode (folosind U) în codul sursă sau puteți avea probleme atunci când codul este interpretat ca un set de caractere diferit. –  > Por Maarten Bodewes.
Maarten Bodewes

Puneți valorile întregi într-o matrice de octeți, apoi puteți folosi CharsetDecoder pentru a le converti într-un șir de caractere folosind "Cp437".

Doar un exemplu simplu:

Charset oem = Charset.forName("Cp437");
ByteBuffer b = ByteBuffer.allocate(0xFF - 0x20 - 1);
for (int i = 0x20; i < 0xFF; i++) {
    if (i == 0x7F) {
        // skip DEL
        continue;
    }

    b.put((byte) i);
}
b.flip();
CharBuffer c = oem.decode(b);
System.out.println(c.toString());