这有点让人困惑,
我试图得到小特萨字符的utf-8 int值,它应该是225182191:编码,但是:
public static void main(String... args){
char c='Ɵ';
System.out.println((byte)c);
}指纹:-97 (?)我确实将eclipse上的文本编码方案从MacRoman更改为UTF-8。
发布于 2014-08-23 14:24:37
文本源文件的编码与运行时的情况无关。
Java字符是一个16位宽的值。它总是隐式的UTF-16。
当编译器生成.class文件时,char文本被转换为UTF-16,并存储在类恒定池中的int结构中。由于紧凑的原因,字符串被转换为修改的UTF-8。
当任何一个被JVM加载时,它们都表示为内存中的UTF-16值/序列。
将值从UTF-16转换为UTF-8:
char c = '\u03B8'; // greek small letter theta θ
for (byte b : String.valueOf(c).getBytes(StandardCharsets.UTF_8)) {
int unsigned = b & 0xFF;
System.out.append(" ").print(unsigned);
}FYI:三字节十进制序列225 182 191是“修饰符字母小θ”,而不是“希腊小写字母θ”。
发布于 2014-08-23 14:24:04
它应该转换为int,或者作为字符串使用,并调用方法codepointAt(0)。
char c='Ɵ';
System.out.println((int)c);
System.out.println("Ɵ".codePointAt(0));https://stackoverflow.com/questions/25462660
复制相似问题