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

    我要啦免费统计
  • 相关阅读:
    爬虫开发9.scrapy框架之递归解析和post请求
    爬虫开发7.scrapy框架简介和基础应用
    爬虫开发6.selenuim和phantonJs处理网页动态加载数据的爬取
    爬虫开发4.三种数据解析方式
    Gym–101061A Cards(有待更新)
    GYM 101061 I. Playing with strings(有待更新)
    HDU2072 单词数
    HDU2057 A + B Again(十六进制加法运算)
    HDU2056 Rectangles
    CodeForces 992C Nastya and a Wardrobe
  • 原文地址:https://www.cnblogs.com/attilax/p/15199136.html
Copyright © 2011-2022 走看看