关于文件的编码

编码问题
1.gbk编码中一个中文汉字两个字节,一个英文一个字节。

2.utf-8编码中一个中文汉字占3个字节,一个英文一个字节。

3.utf-16be编码中一个中文汉字和英文都是占用两个字节。

4.java中一个字符占两个字节,所以可以放入一个中文汉字。因为默认的gbk汉字占用两个字节。

5.java是双字节编码utf-16be

6.在使用中文编译器编写中文文档时,默认使用ANSI编码表,复制粘贴时会自动转换成对应的编码表。

7.用什么编码表编写的字符串,就要用什么编码表读取,否则会出现乱码。

8.eclipse中默认是gbk编码。
androidstudio可以在Editor下的File Encodings下设置编码格式

贴出代码

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String str="小ABC";


        try {
            //GBK编码中一个中文占2个字节,一个英文占一个字节
            byte[]bytes1=str.getBytes("gbk");
            for(byte b:bytes1){
                Log.i("输出",Integer.toHexString(b & 0xff)+"-----------");
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }


        try {
            //utf-8编码中一个中文占三个字节,一个英文占一个字节
            byte []bytes=str.getBytes("utf-8");
            for(byte b:bytes){
                Log.i("输出",Integer.toHexString(b & 0xff)+"****");
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

      //java是双字节编码 utf-16be
        byte[]byte1= new byte[0];
        try {

            //utf-16be编码中,一个中文占2个字节,一个英文占2个字节
            byte1 = str.getBytes("utf-16be");
            for(byte b:byte1){
                Log.i("输出",Integer.toHexString(b & 0xff)+"");
            }

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        /***当你的字节序列是某种编码时,这个时候想把字节序列变成字符串
         * 也需要使用这种方式,否则会出现乱码*/

        try {
            String  str1 = new String(byte1,"utf-16be");//byte1是utf-16be编码,换成别的就会乱码
            Log.i("输出",str1+"");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }



    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值