编码心得
2020-09-22 21:48 Spiderman25 阅读(173) 评论(0) 收藏 举报1、"".getBytes()用到Charset.defaultCharset().name(),Charset.defaultCharset().name()会调用System.getProperty("file.encoding"),而这个参数可以从jvm -Dfile.encoding=utf-8中获取,如果为空会获取系统的默认编码,windows的默认编码为GBK,如果都没有,则默认UTF-8(好像不可能没有)
2、随后会调encode(csn, ca, off, len);而里面如果没有获取到charsetName,则使用ISO-8859-1。
3、凡是不设置字符编码的都使用Charset.defaultCharset().name()
4、GBK、GB2312、GB18303一个汉字2字节,一个英文字母一字节。UTF-8一个中文3字节,ISO-8859-1、ASCII一个字节,无法表示中文,中文也当一个字节
5、文件的编码方式与javac的编码方式要一样,要不然"".getBytes()中文出乱码,在idea中java compiler中添加-encoding utf-8,默认为系统编码
6、在代码中System.setProperty("file.encoding","uft-8")对编码不起作用,因为Charset.defaultCharset()在之前已经初始化了就不再改变了
7、String内部结构为char数组,char是2个字节,可以表示中文,所以不管什么编码转成String,只要各编码字节对应的字符内容一样,里面的内容都一样,把String转成字节其实是为了给其它服务器的程序用。
8、char是没有符号的,最值范围是0-65535,编码后形成的字节数组与String中的char数组没有必然相等关系。例如“我你q”,GBK为5个字节,UTF-8为7个字节,String中的char数组为6个字节
9、二进制低的类型转高的类型时会补符号位,如byte转int,如为正数高位补0,负数补1,所以把byte转16进制时这样用:Integer.toHexString(0xff&byte),因为如果是负数,高位1就变为0
10、\r \n \t \f看这里https://blog.csdn.net/weixin_38481963/article/details/84783315
11、字符串\后一定要跟一个构成字符的符号,则否要加\来转义,正则表达式中如果遇到特殊符号要加上两个\,所以把“\\”变成"\\\\"时就会是这样:“\\”.replaceAll("\\\\","\\\\\\\\")。
12、Integer.parseInt不能解析负的二进制。
13、ByteArrayOutputStream把InputStream读出来
14、MessageDigest md5 sha1 sha256 sha 512
HttpPost request=new HttpPost(url);
request.setConfig(config);
request.setHeader(key,value);
StringEntity strEntity=new StringEntity(dataStr,charset);
strEntity.setContentType("application/json;charset=xx");
request.setEntity(strEntity);
CloseableHttpClient httpclient=builder.build();
CloseableHttpResponse response=httpclient.execute(request);
客户端请求时传编码,接口服务器接收到流后设置编码,接口服务器返回也设置编码,客户端接收到流后转成字符串也设置编码
原码,补码,反码之间怎么转换以及简单运算?
https://jingyan.baidu.com/article/c85b7a649ec664003bac95e9.html
二进制转化、<<、>>、>>>移位运算
在里面的结论中,>>负数的应该是往远离0的方向取值
https://www.cnblogs.com/xyinjie/p/10482208.html
Java Integer 进制转换
https://blog.csdn.net/ybcljay/article/details/81976480
java中Integer包装类的详细讲解(java二进制操作,所有进制转换)
https://cloud.tencent.com/developer/article/1385803
浙公网安备 33010602011771号