在字节变量中强制Unicode

Fau*_*tus 4 java string unicode byte bytearray

我最近发现您以下列方式将String转换为字节数组:

String S = "ab";
byte arr[] = S.getBytes();
Run Code Online (Sandbox Code Playgroud)

现在,我尝试使用String "\u9999",答案是[63].我认为这将是9999(mod 128)= 15,这实际上是我们得到的byte b = 9999.63背后的原因是什么?

p e*_*e p 5

对于Unicode字符,您可以在调用中指定编码getBytes:

byte arr[] = S.getBytes("UTF8");
Run Code Online (Sandbox Code Playgroud)

至于为什么你得到63结果,getBytes没有参数的调用使用你的平台的默认编码.该字符\u9999无法在您的默认编码中正确表示,因此转换为?ASCII中的十进制值63.