首页 新闻 搜索 专区 学院

java中文和日文两种编码后得到的字节数组混合组成的,请问怎么编码成字符串?

0
悬赏园豆:100 [待解决问题]
//the byte[] represents "C注ファイル         PARM 年月日输入不正确         入力文字列"
        byte[] buf = new byte[] { 64, 64, 64, 64, 64, -61, 14, 73, 68, 67, -97,
                67, 71, 67, -126, 67, -81, 15, 64, 64, 64, 64, 64, 64, 64, 64,
                64, -41, -63, -39, -44, 64, 14, 82, -23, 90, -63, 84, -44, 85,
                -29, 84, -22, 73, -70, 91, -98, 84, -74, 15, 64, 64, 64, 64,
                64, 64, 64, 64, 64, 14, 70, 101, 69, -9, 69, -54, 72, -14, 75,
                -76, 15, 64, 64, 64, 64, 64, 64, 64, 64, 64 };
        String japaneseStr = new String(buf,"cp939");// convert to japanese
        System.out.println(japaneseStr);//output:"     C注ファイル         PARM 衷扞唖詑煤証昿翰         入力文字列         "
        
        String chineseStr = new String(buf,"cp935"); // convert to chinese
        System.out.println(chineseStr); //output:"    C堡ファイル         PARM 年月日输入不正确         ㄅ㈦⑹绑兜         "
        //"注ファイル"       is japanese
        //"年月日输入不正确"   is chinese
        //"入力文字列"       is japanese
        //i want to get the result is "     C注ファイル         PARM 年月日输入不正确         入力文字列         "
lane3000的主页 lane3000 | 初学一级 | 园豆:6
提问于:2014-11-20 15:20
< >
分享
所有回答(3)
0
angelshelter | 园豆:9676 (大侠五级) | 2014-11-20 17:34
1

问题1:buf是按照什么编码转换成这串byte数组的?

问题2:知道日文的编码中一个日文占几个字节不?我不知道

 

解决1:中文中按照GBK编码的话一个中文占2个字节,UTF-8一个汉字占3个字节

你的字符串中同时包含2种字符,因此必须使用能够包含两则的编码区编码和解码,记住,不只是解码,编码也是,

比如使用UTF-16或者UCS-2去编码解码,他们的一个码位能够包含一个中文,或者包含一个日文,因此按照这个解码肯定没问题。

初步确定你的乱码问题是编码成buf的时候出问题了的,因此不管你如何解码,已经无效了。

衍悔 | 园豆:261 (菜鸟二级) | 2014-11-21 18:42
0

建议UTF-16

Mr.Brian | 园豆:1518 (小虾三级) | 2014-11-22 15:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册