atitit.无损传输二进制数据串传输网络
atitit.无损传输二进制数据串传输网络
1. gbk的网络传输问题,为什么gbk不能使用来传输二进制数据
1
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
版权声明:本文博客原创文章。博客,未经同意,不得转载。
atitit.无损传输二进制数据串传输网络的更多相关文章
- gSoap传输二进制数据
最近使用gSoap传输二进制数据,遇到问题.gSoap不能一次传输二进制数据.所以使用分包传送. struct xsd_DwgInfo { ];//分包大小 int m_nReadSize;// bo ...
- Linux企业级项目实践之网络爬虫(16)——使用base64传输二进制数据
用http传输二进制的数据时,需要将二进制做一下转化,例如传输的int类型,将int类型之间转为char以后,丢失掉了长度的信息,如数字123456,本来只有4个字节,但是转化成文本的"12 ...
- http协议传输二进制数据以及对输入流(php://input)和http请求的理解
1.index.php <?php $data=file_get_contents('./a.jpg'); $opts = array('http' => array( 'method' ...
- php将字符串转为二进制数据串
/** * 将字符串转换成二进制 * @param type $str * @return type */ function StrToBin($str){ //1.列出每个字符 $arr = pre ...
- atitit.二进制数据无损转字符串网络传输
atitit.二进制数据无损转字符串网络传输 1. gbk的网络传输问题,为什么gbk不能使用来传输二进制数据 1 2. base64 2 3. iso-8859-1 (推荐) 2 4. utf-8 ...
- C++和python使用struct传输二进制数据结构来实现
网络编程问题往往涉及二进制数据的传输.在C++经常使用的传输是文本字符串和分组结构. 假设该数据可以预先送入连续的内存区域,然后让send函数来获得的第一个地址,这一块连续的内存区就能完成传输数据.文 ...
- 前端H5中JS用FileReader对象读取blob对象二进制数据,文件传输
HTML5中的Blob对象只是二进制数据的容器,本身并不能操作二进制,故本篇将对其操作对象FileReader进行介绍. FileReader FileReader主要用于将文件内容读入内存,通过一系 ...
- 网络TCp数据的传输设计(黏包处理)
//1.该片为引用别人的文章:http://www.cnblogs.com/alon/archive/2009/04/16/1437599.html 解决TCP网络传输"粘包"问题 ...
- 网络学习day02_OSI七层模型及数据的传输过程
title: 2018.9.2 OSI七层模型及数据的传输过程 tags: 计算机网络, OSI七层模型, 数据传输, 数据解封装 --- OSI七层模型和TCP/IP五层模型 OSI七层模型 我们说 ...
随机推荐
- 使用javascript开发2048
嗯,团队队友开发了一个简单的2048...哈哈,没办法,这游戏那么疯狂,必须搞搞啦,大家能够直接粘贴代码到一个html文件,直接执行就可以 依赖文件:jquery,假设乜有,大家能够自己下载一份 &l ...
- VS2010关于error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
前段时间自己的系统一直在安装更新.今天突然打开VS2010当运行的时候一直出现error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏这种错误.然后就百度 解决的方法: 1.项目\属 ...
- Java对于私有变量“反思暴力”技术
(1)这两个类:(在相同的包装可以是) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGxnZW4xNTczODc=/font/5a6L5L2T/font ...
- Eclipse with C++: "Launch failed. Binary not found."
Eclipse with C++: "Launch failed. Binary not found." (windows 7) 用Eclipse创建一个Hello world ...
- <a href='javascript:void(0)' onclick='my()'></a>
- 创Wcf案例数据服务
首先,创建实体类: using System; using System.Linq; using System.Collections.Generic; using System.Data.Servi ...
- hdu 4944 FSF’s game(数论)
题目链接:hdu 4944 FSF's game 题目大意:给定N,能够用不大于N的长a和宽b.组成N∗(N−1)2种不同的矩形,对于每一个矩形a∗b要计算它的值,K为矩形a,b能够拆分成若干个K∗K ...
- PHPthinking官方论坛
PHPthinking官方论坛正式上线一个月!眼下.我们已经有数百个固定用户的.论坛发展迅速,所有份额一些技术贴,我们希望,其他许多用户增加来,创建学习.交流更方便.丰富的内容PHP座谈会! PHPt ...
- 【Web探索之旅】第二部分第一课:客户端语言
内容简介 1.第二部分第一课:客户端语言 2.第二部分第二课预告:服务器语言 第二部分:Web编程语言和工具 大家好.上一个部分我们学习了Web的一些基本概念: 什么是Web? Internet和We ...
- 完全背包(南阳oj311)(完全背包)
全然背包 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 直接说题意,全然背包定义有N种物品和一个容量为V的背包.每种物品都有无限件可用. 第i种物品的体积是c.价值 ...