zoukankan      html  css  js  c++  java
  • 文件在不同的平台传输的编码转换

    1.文件存储在磁盘上都是二进制流,物理上都是存储的二进制。

    2.文件分为两种:文本文件(ASCII)和二进制文件(Binary)。其实,文本文件是特殊的二进制文件,在磁盘上存储的依然是二进制,

    只不过存储的二进制是用ASCII或Unicode进行了编码的二进制。

    二进制文件用内存中一样的数据保存,保存在硬盘上就是二进制。

    二进制文件和文本文件的区别在于:在打开的时候,程序对其内容的解释上。

    例子:

    在eclipse中建立一个文件,敲下a,按下ctrl+s,这时候文件是有一个编码的,是eclipse默认的编码,假设是UTF-8。

    a的UTF-8编码是97,那么实际上在磁盘上面存储的是97的二进制形式1100001。当你使用eclipse打开这个文件时,eclipse的文本编辑器会做一个反向转换,将二进制编码转换为字符a。

    为什么能够转换成功?因为文件有一个文件头记录了文件的原始编码,例子中就是UTF-8,eclipse也知道要被转换为的目标编码,默认是UTF-8,这样就能够转换成功。

    不只是eclipse,任何的文本编辑器其实都是同一个道理,它在打开文件的时候,都会进行编码转换,当然在转换的时候可能出现乱码,因为编辑器目标编码与原始编码的编码表可能不是一一对应的。

    遇到的问题:文件被zBuild从GitHub下载到z/OS上,文件的编码发生了什么样的转换?

    Z/OS上的编码默认的是IBM-1047。zBuild知道了目标编码是IBM-1047,文件的原始编码是UTF-8,这样就可以将UTF-8转换成IBM-1047了。

    注意:文件在不同的平台传输的时候(例如github到z/OS),编码转换只会在文本文件上面发生,对于二进制文件是不会发生任何编码转换的。

    一些jar包以及zip包,通常被当做二进制文件对待,这样,对于jar包和zip包,不进行转换,以免在不同的平台中传输的时候,造成数据丢失。

    通过在.gitattributes 文件中加入*.jar binary。可以让git将所有的jar包当做二进制文件,这样一来,在将github上的代码拉取到z/OS上的时候,二进制文件就不会被当做文本文件,从而不会发生编码转换,jar包就不会出现破坏,出现打不开的情况。

  • 相关阅读:
    猎户、双子、英仙
    第二卦,还叫我保持现状?
    昨晚的第三卦,就快万劫不复了
    明天要出去办事,看看情况
    luogu P3939 数颜色 |vector
    luogu P2701 [USACO5.3]巨大的牛棚Big Barn |动态规划
    luogu P2345 奶牛集会 |排序+树状数组
    luogu P4943 密室 |最短路
    luogu P4343 [SHOI2015]自动刷题机 |二分答案
    luogu P3110 [USACO14DEC]驮运Piggy Back |最短路
  • 原文地址:https://www.cnblogs.com/wangwenhui/p/11906351.html
Copyright © 2011-2022 走看看