JAVA扩展ASCII表的使用

3

在我的应用程序中,我需要获取扩展ASCII表中显示的字符。但是,当我将十进制值转换为字符时,我得到不同的字符。这些字符在JAVA中的实际值是什么?我没有在控制台或文件中写入字符,只是写入图像中。

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;
}

感谢您的帮助,对于我的英语不好,非常抱歉 :-)

enter image description here


*注:本文涉及IT技术相关内容。

2
“扩展ASCII表”只是将“ASCII之上”的八位值映射到终端(或其他呈现设备)上的符号的一种映射。也就是说,它只是将128-255的值映射到许多代码页中的一个。也就是说,显示的字符取决于*显示它的东西(例如分配的含义和“字体”)以及其他适用规则(例如代码页或“语言”)所应用的内容。 - user166390
也许这个链接可以帮助您:http://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8 - Smit
我只写图像上的字符,然后只与图像一起工作。 - zdarsky.peter
@zdarsky.peter 将此添加到问题中:字符是如何被书写/渲染的? - user166390
该表确实看起来像IBM OEM字符表。 - Maarten Bodewes
显示剩余2条评论
2个回答

1
我的解决方案是手动创建一个包含我所需字符的字符数组。

1
这可能是一个不错的解决方案,但请确保在您的源代码中将它们编码为Unicode点(使用\U),否则当代码被解释为不同的字符集时,您可能会遇到麻烦。 - Maarten Bodewes

0

将整数值放入字节数组中,然后您可以使用 CharsetDecoder 使用 "Cp437" 将它们转换为字符串。

以下是一个简单的示例:

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());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接