Java で GB18030 cp を使用していくつかの中国語の文字をエンコードしようとしていますが、Google 翻訳で「数字」に変換されるこの数字に出くわしました。
問題は、エンコードすると 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 を使用してそれをデコードしようとすると、? 漢字の横に表示される文字 (??数字)。上記の最後の 2 バイトである「CA FD」のみをデコードしようとすると、正しく文字にデコードされます。
Google 翻訳では、上記の文字は簡体字であることに注意してください。私のソースファイルもUTF8で保存されています。
GB18030 は 1 文字あたり最大 4 バイトだと思いましたか? このキャラクターが奇妙に振る舞う特別な理由はありますか? (私は中国人ではありません、ところで)