我正在尝试使用 Java 中的 GB18030 cp 对一些汉字进行编码,我遇到了这个字符数,它在谷歌翻译中翻译为“数字”。
问题是,它在编码时变成了 10 个字节(!):
81 30 81 34 81 30 83 31
import java.math.BigInteger;
import java.nio.charset.Charset;
public class Test3
{
public static void main(String[] args)
{
String s = new String("数");
System.out.println( "source file: "+String.format("%x ",
new BigInteger(1, s.getBytes(Charset.forName("GB18030"))) ));
}
}
当我尝试使用 GB18030 对其进行解码时,它会导致?出现在中文数字字符(??数)旁边的字符。当我尝试仅解码上面的最后两个字节“CA FD”时,它会正确解码为字符。
谷歌翻译注意到上面的字符是简体的。我的源文件也以 UTF8 格式保存。
我以为 GB18030 每个字符最多 4 个字节?这个角色表现得如此奇怪有什么特别的原因吗?(我不是中国人,顺便说一句)