2

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 バイトだと思いましたか? このキャラクターが奇妙に振る舞う特別な理由はありますか? (私は中国人ではありません、ところで)

4

1 に答える 1