zoukankan      html  css  js  c++  java
  • 编码问题笔记

    1:JVM存储格式:JVM中,数据都是二字节存储的。int、byte等一字节长的数据在Java中也是以两字节存储,高八位是0。而long、double则是真正的两字节数据类型。

    2:JVM读写数据时,先读写低八位,再读写高八位,所以long、double两字节数据的读写分两步进行,故不是原子性的,而单字节长的数据则由于高八位无影响,所以是原子性的。

    3:乱码的原因:在IDE中,按照IDE的编码类似显示;存到文档中,按照文档的编码成byte序列存储;读到系统中、项目中、浏览器中,则按照所处环境解码显示。

         以上三者,一旦出现中间有不一致的。例如:A格式编码得到的byte序列,读取到浏览器后以B格式解码显示,就会乱码。

    4:GBK编码:中文存储占2字节,英文1字节。

    5:UTF-8编码:中文存储占3字节,英文1字节。

    6:Java是双字节编码,称为 utf-16be:在Java中无论中文还是英文字符都是2字节长。

    7:避免乱码:读取的字节序列是什么格式编码的,就按什么方式解码:

    String str=new String(byte[],"encoding");

      如果不指明解码格式,则按照IDE项目的默认编码方式来解码该byte[]来生成字符串。

    8:文本文档是存储的是字节序列,可以存储任意编码格式的字节序列。

        在中文机器创建的文本文档,默认编码方式是ANSI,如果放其他编码格式的,则显示乱码。(因为显示就是解码)

  • 相关阅读:
    Python自动截图html页面
    filebeat+kafka+logstash+Elasticsearch+Kibana日志收集系统搭建
    k8s重要概念
    1721. 使括号有效的最少添加
    167. 链表求和
    272. 爬楼梯 II
    1609. 链表的中间结点
    SQL server查看触发器是否被禁用
    C#窗体内控件大小随窗体等比例变化
    微信接口返回码参考表
  • 原文地址:https://www.cnblogs.com/ygj0930/p/6648261.html
Copyright © 2011-2022 走看看