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,如果放其他编码格式的,则显示乱码。(因为显示就是解码)

  • 相关阅读:
    Revit API改变风管及管件尺寸
    Revit API注册事件
    Revit API创建标高,单位转换
    Revit API判断直线相交关系移动风管
    Revit MEP API找到连接器连接的连接器
    Revit MEP API连接器类别
    AngularJS如何编译和呈现页面
    AngularJS自定义Directive初体验
    Webpack基本用法
    对一个前端AngularJS,后端OData,ASP.NET Web API案例的理解
  • 原文地址:https://www.cnblogs.com/ygj0930/p/6648261.html
Copyright © 2011-2022 走看看