zoukankan      html  css  js  c++  java
  • atitit.无损传输二进制数据串传输网络

    atitit.无损传输二进制数据串传输网络 

    1. gbk的网络传输问题,为什么gbk不能使用来传输二进制数据 1

    2. base64 2

    3. iso-8859-1  (推荐) 2

    4. utf-8 (不能使用) 2

    1. gbk的网络传输问题,为什么gbk不能使用来传输二进制数据

    gbk造成信息丢失

    因为有些字符在gbk字符集中找不到相应的字符。所以默认使用编码63取代,也就是?(问号)。

    。。gbk只能兼容低位asc编码(英文字母),高位编码要使用来编码汉字了...

    作者::老哇的爪子Attilax艾龙,EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

    s="ab";

    gbked   [-50, -46, 97, 98, -71, -2]

    winhex CED26162B9FE  ,, ce(206),d2(210)

    zip   [120, -100, 59, 119, 41, 49, 105, -25, 63, 0, 14, 14, 4, 27]

    》》》gbk str

    zipstr>>byteArr   [120, 63, 119, 41, 49, 105, 63, 0, 14, 14, 4, 27]  

    gbk整体编码范围为8140-FEFE,首字节在81-FE 之间,尾字节在40-FE 之间。gbk 81(129),40(64)------fe(254)

    2.  base64

    base64最大的问题是大小新增30%...

    3. iso-8859-1  (推荐)

    iso-8859-1 是非常好的解决...,使用它进行转码一般也没有问题。

    iso-8859-1是JAVA网络传输使用的标准字符集 

    。当我们要把一个“字节串”转化成“字符串”,而又不知道它是哪一种 ANSI 编码时。先临时地把“每个字节”作为“一个字符”进行转化。不会造成信息丢失。 

    iso8859能够完美的转换0-256区间的字符。。。

    不会丢失。。

    ISO-8859-1 字符集的编码范围是 0000-00FF,正好和一个字节的编码范围相相应。这样的特性保证了使用 ISO-8859-1 进行编码和解码能够保持编码数值不变

    这样的特性保证了使用 ISO-8859-1 进行编码和解码能够保持编码数值不变

    4. utf-8 (不能使用)

    s="ab";

    utf8 bytes  [-26, -120, -111, 97, 98, -27, -109, -120]

    kmprs bytes  [120, -100, 123, -42, 49, 49, 49, -23, -23, -28, 14, 0, 22, 32, 4, -61]

    >>>>utf8 str

    utf8str2bytes(len27)  [120, -17, -65, -67, 123, -17, -65, -67, 49, 49, 49, -17, -65, -67, -17, -65, -67, -17, -65, -67, 14, 0, 22, 32, 4, -17, -65, -67]

    5. 參考:

    字符编码笔记:ASCII。Unicode和UTF-8 - 阮一峰的网络日志.htm

    我要啦免费统计

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    HDOJ 1846 Brave Game
    并查集模板
    HDU 2102 A计划
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    POJ 1321 棋盘问题
    CF 999 C.Alphabetic Removals
    CF 999 B. Reversing Encryption
    string的基础用法
    51nod 1267 4个数和为0
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4670547.html
Copyright © 2011-2022 走看看