获取扩展的ASCII十进制值

时间:2015-02-01 10:15:30

标签: java

如何将扩展的ascii字符转换为其十进制值?

char symbol = '€';  
int value = (int) symbol;

我尝试了上面的代码,但它返回了value = 8364

2 个答案:

答案 0 :(得分:1)

以下代码将使用您的本地Java安装可用的所有字符集解码欧元符号:

import java.nio.charset.Charset;
import java.util.Map;

public class CharsetTest {

    public static void main(String[] args) {
        String euro = "€";

        Map<String, Charset> charsets = Charset.availableCharsets();
        for (Map.Entry<String, Charset> entry : charsets.entrySet()) {
            Charset cs = entry.getValue();
            byte[] bytes;
            try {
                bytes = euro.getBytes(cs);
            } catch (Exception e) {
                System.err.println(entry.getKey() + " decode failed");
                continue;
            }
            System.out.print(entry.getKey());
            for (String alias : cs.aliases()) {
                System.out.print(" " + alias);
            }
            for (byte bb : bytes) {
                System.out.print(" " + bb);
            }
            System.out.println();
        }
    }
}

许多字符集为欧元符号返回63(ASCII“?”)。这是不在字符集中的字符的常见替换。值128将显示为-128,因为java字节已签名,因此这是您要查找的数字。当我运行它时,我得到-128几个字符集:

windows-1250 cp1250 cp5346 -128
windows-1252 cp5348 cp1252 -128
windows-1253 cp1253 cp5349 -128
windows-1254 cp1254 cp5350 -128
windows-1255 cp1255 -128
windows-1256 cp1256 -128
windows-1257 cp1257 cp5353 -128
windows-1258 cp1258 -128
x-IBM874 ibm-874 ibm874 874 cp874 -128
x-mswin-936 ms936 ms_936 -128
x-windows-874 ms-874 ms874 windows-874 -128

使用任何这些字符集,您可以执行此操作并获得预期值:

String euro = "€";
byte[] bytes = euro.getBytes(Charset.forName("charsetname"));

我怀疑windows-1252是您想要的字符集,但您可以查看其他人的维基百科页面,看看其中一个是否更适合您的目的。

答案 1 :(得分:0)

Java根据UTF-8 NOT 保留扩展ASCII到ISO 8859-1并根据UTF-8 - €{{1}代表EURO SIGN
有关此内容的更多参考:UTF-8 Currency Symbols

相关问题