精华内容
下载资源
问答
  • 编码类型

    2017-06-15 16:53:00
    计算机只能处理数字,不能处理文本,所有文本必须先转换成相应的数字,才能被计算机识别,这就涉及到编码的问题了。 编码类型: 1、ASCII:American Standard Code for Information Interchange,美国信息互换...

    计算机只能处理数字,不能处理文本,所有文本必须先转换成相应的数字,才能被计算机识别,这就涉及到编码的问题了。

     

    编码类型:

    1、ASCII:American Standard Code for Information Interchange,美国信息互换标准代码

    因为美国使用的语言就是英文,所有这套编码包含:大小写字母、数字和一些符号,总共127个字符。

    后来增加了 128到255这一页的字符集被称”扩展字符集”。但是原有的编号方法,已经再也放不下更多的编码。

     

    2、UNICODE:Universal Multiple-Octet Coded Character Set”,简称 UCS

    包含所有的语言字符

     

    3、UTF:UCS Transfer Format,可变长编码

      UTF8 就是每次8个位传输数据

      UTF16 就是每次16个位传输数据

     

    编码与字段的转换:

    ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符

    转载于:https://www.cnblogs.com/cxx1/p/7018756.html

    展开全文
  • 一、认识各种编码方式ASCII 码ASCII码:上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间关系,做了统一规定。这被称为ASCII码,英文名为America Standard Code for Information Interchange 即...

    一、认识各种编码方式

    ASCII 码

    ASCII码:上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,英文名为 America Standard Code for Information Interchange 即美国信息交换标准码表。ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。

    缺点:

    • 不能表示所有字符。

    • 相同的编码表示的字符不一样:比如,130在法语编码中代表了é,在希伯来语编码中却代表(ג) 了字母Gimel

      0285f8aed6504ade0b75ae33705f4e20.png

    Unicode 编码

    Unicode码表:万国码,也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多的字符,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,使用 Unicode 没有乱码的问题(java语言默认使用的编码表)

    缺点:Unicode 只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储:无法区别 Unicode 和 ASCII:计算机无法区分三个字节表示一个符号还是分别表示三个符号。另外,我们知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储空间来说是极大的浪费。

    805af417bd27d7075adfade88fe5af17.png

    UTF-8

    UTF-8 是一种变长的编码方式。它可以使用 1-6 个字节表示一个符号,根据不同的符号而变化字节长度。UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。

    UTF-8的编码规则:

    对于单字节的UTF-8编码,该字节的最高位为0,其余7位用来对字符进行编码(等同于ASCII码)。

    对于多字节的UTF-8编码,如果编码包含 n 个字节,那么第一个字节的前 n 位为1,第一个字节的第 n+1 位为0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。

    48bdc5846e8f3060a3ac2bbd9607ab4b.png

    乱码:世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。

    二、基本数据类型转换

    自动类型提升(隐式)

    特点:代码不需要进行特殊处理,自动完成。

    容量小的类型自动转换为容量大的数据类型。数据类型按容量大小(容量大小指的是数表示的范围,并非占用内存空间的大小)排序为:

    57a664f84c7291876c44ce4a15e1a69c.png

    有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。

    byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。

    boolean类型不能与其它数据类型运算。

    自动类型提升的特殊情况:

    在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量,那么编译器javac将会直接将若干个常量表达式计算得到结果。

    例如:short result=5+8

    等号右边全都是常量,没有任何变量参与运算编译之后,得到的.class字节码文件当中相当于【直接就是】:

    short result=13

    右侧的常量结果数值,没有超过左侧范围,所以正确。这称为编译器的常量优化。但是注意:一旦表达式当中有变量参与,那么就不能进行这种优化了

    //情况一:byte b1 =1;byte b2 =2;byte b3=b1+b2;System.out.println(b3);//编译报错 错误:不兼容的类型 可能会溢出(计算机在解释运行时才会在内存中开辟空间,但编译的时候计算机不知道这个变量的值)

    注:(情况一中的byte、short、char替换为int或者long则不会报错,因为本身范围大,相当于java给的特权)

    //情况二:byte b1 =1;byte b2 =b1+2;System.out.println(b2);//编译报错 错误:不兼容的类型 可能会溢出(计算机在解释运行时才会在内存中开辟空间,但编译的时候计算机不知道这个变量的值

    即假设b1的值是127这种临界值,还是不会超,但是一相加的值就不确定就可能溢出。即右边是常量就可以做自动转换,右边如果是变量就不做自动转换,因为做了自动转换就可能带来精度的丢失。)

    byte b1=2;b1+=5;System.out.println(b1);

    编译正确,复合赋值运算符其中隐含了一个强制类型转换。+=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

    d385b216d66620ad8c470dec5720ae96.png

    •特例

    对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么javac编译器将会自动隐含地为我们补上一个(byte)(short)(char)。

    1.如果没有超过左侧的范围,编译器补上强转。

    2.如果右侧超过了左侧范围,那么直接编译器报错。

    • 可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围

    //情况三:byte b =126+1;System.out.println(b);//编译正确
    //情况四:byte b = 127+1;System.out.println(b);//编译报错 超出byte的范围

    0d144c67b033832f46c717f748cfe801.png

    强制类型转换(显式转换)

    特点:代码需要进行特殊的格式处理,不能自动完成。

    格式:范围小的类型 范围小的变量名=(范围小的类型)原本范围大的数据  

    注:强制类型转换时右边转换类型必须用小括号括起来

    boolean类型不可以转换为其它的数据类型。

    自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意

    通常,字符串不能直接转换为基本类型但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。

    String a = “43”; int i = Integer.parseInt(a);

    精度损失举例

    int i2 = 128;byte b = (byte)i2;System.out.println(b);//-128

    字符串类型:String

    String不是基本数据类型,属于引用数据类型

    使用方式与基本数据类型一致。例如:String str = “abcd”;

    一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据。当把任何基本数据类型(包括布尔型)的值和字符串(String)进行连接运算且只能是连接运算时(+),基本数据类型的值将自动转化为字符串(String)类型。例如:

    str = str + “xyz” ;int n = 100;str = str + n;

    常见字符串和其他数据类型拼接练习举例:

    char c='a';int num=10;String str="hello";System.out.println(c+num+str);//107helloSystem.out.println(c+str+num);//ahello10System.out.println(c+(num+str));//a10helloSystem.out.println(str+num+c);//hello10a

    练习:

    //输出:* *System.out.println("* *");//* *System.out.println('*'+'\t'+'*');//93System.out.println('*'+"\t"+'*');//* *System.out.println('*'+'\t'+"*");//51*System.out.println('*'+('\t'+"*"));//* *
    展开全文
  • java 编码类型

    2016-05-28 23:16:14
    编码类型 ASCII:美国标准信息交换码。  用一个字节7位可以表示。 ISO8859-1:拉丁码表。欧洲码表。  用一个字节8为表示。 GB2312:中国中文编码表。  用俩个字节表示一个汉字。 GBK:扩容后中国中文编码...

    编码类型

    ASCII:美国标准信息交换码。
               用一个字节的7位可以表示。
    ISO8859-1:拉丁码表。欧洲码表。
              用一个字节的8为表示。
    GB2312:中国的中文编码表。
               用俩个字节表示一个汉字。
    GBK:扩容后的中国中文编码表。融合了更多的中文字符。大约2万个。
            
    Unicode:国际标准码,融合了多种文字(java的默认编码方式)。 
                 所有文字都用俩个文字来表示。
    UTF-8:最多用三个字节来表示一个字符。最通用的码表。

    java中的流中编码的转化例子

    import java.io.*;
    public class EncodeStrem {
    
    	/**
    	 * @param args
    	 * @throws IOException 
    	 */
    	public static void main(String[] args) throws IOException {
    		// TODO Auto-generated method stub
                  //writeText();
                  readText();
    	}
    	public static void readText() throws IOException
    	{
    		InputStreamReader isr = new InputStreamReader(new FileInputStream("utf.txt"),"gbk");
    		char[]  buf = new char[6];
    		isr.read(buf);
    		String s=new String(buf);
    		System.out.println(s);
    	}
         public static void writeText() throws IOException
         {
        	 OutputStreamWriter osw=
        			  new OutputStreamWriter(new FileOutputStream("utf.txt"),"utf-8");
        	       osw.write("你好");
        	       osw.close();
         }
    }

    java中编码解码的实例

    import java.io.*;
    import java.util.*;
    
    public class EncodeDemo {
    
    	/**
    	 * @param args
    	 * @throws IOException 
    	 */
    	public static void main(String[] args) throws IOException {
    		// TODO Auto-generated method stub
                   String s= "你好";
                   byte[]  b= s.getBytes("utf-8");//编码过程
                // String  s1=  new String(b,"gbk");//解码过程
                  // System.out.println(s1);
                   //System.out.println(Arrays.toString(b));
                  
                   
                   String s3 = new String(b,"ISO8859-1");//进行了错误的解码后
                   System.out.println(s3);
                   byte[] b2 = s3.getBytes("ISO8859-1");//进行一次员解码的编码得到原来的字节
                   
                   System.out.println(Arrays.toString(b2));
                   String s2 = new String(b2,"utf-8");
                   System.out.println(s2);
                   //注意:如果用UTF-8是不适用这种方法的
    	}   
    }



    展开全文
  • contentType是指http/https发送信息至服务器时的内容编码类型,contentType用于表明发送数据流的类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据。内容编码类型的作用,有点像本地文件的后缀名。 ...

    转自https://segmentfault.com/a/1190000006871099

    contentType是指http/https发送信息至服务器时的内容编码类型contentType用于表明发送数据流的类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据。内容编码类型的作用,有点像本地文件的后缀名。

    常见的contentType

    一、x-www-form-urlencoded

    这是Jquery/Zepto Ajax默认的提交类型。最简例子为:

     1 let userInfo = {
     2  name: 'CntChen',
     3  info: 'Front-End',
     4 }
     5 
     6 $.ajax({
     7   url: 'https://github.com',
     8   type: 'POST',
     9   data: userInfo,
    10   success: (data) => {},
    11 });

    此时默认的提交的contentTypeapplication/x-www-form-urlencoded,此时提交的数据将会格式化成:

     name=CntChen&info=Front-End

    HTML的form表单默认的提交编码类型也是x-www-form-urlencoded,可能这就是Jquery/Zepto等类库(其实是Ajax:XMLHttpRequest)也默认使用contentType:x-www-form-urlencoded的原因。如果请求类型typeGET,格式化的字符串将直接拼接在url后发送到服务端;如果请求类型是POST,格式化的字符串将放在http body的Form Data中发送。

    二、json

    使用json内容编码发送数据,最简例子为:

     1 let userInfo = {
     2  name: 'CntChen',
     3  Info: 'Front-End',
     4 }
     5 
     6 $.ajax({
     7   url: 'https://github.com',
     8   contentType: 'application/json',
     9   type: 'POST',
    10   data: JSON.stringify(userInfo),
    11   success: (data) => {},
    12 });

    最主要的不同有3点:

    • 需要显式指定contentTypeapplication/json,覆盖默认的contentType

    • 需要使用JSON.stringify序列化需要提交的数据对象,序列化的结果为:

    {"name":"CntChen","info":"Front-End"}
    • 提交的类型不能为GET,使用GET的话,数据会在url中发送,此时就无法以json字符串的编码发送

    三、multipart/form-data,主要用于传输文件数据的

    四、JS对象编码

    对于扁平的参数对象,使用x-www-form-urlencodedjson并没有大的差别,后台都可以处理成对象,并且数据编码后的长度差别不大。
    但是对于对象中嵌套对象,或对象字段包含数组,此时两种内容编码方式就有较大差别。
     
    普通对象
    1 {
    2     userInfo :{
    3      name: 'CntChen',
    4      info: 'Front-End',
    5      login: true,
    6     },
    7 }
    • to x-www-form-urlencoded (1)
    userInfo[name]=CntChen&userInfo[info]=Front-End&userInfo[login]=true
    • to json (2)
    {"userInfo":{"name":"CntChen","Info":"Front-End","login":true}}

    对象字段为数组

     1 {
     2     authors:[
     3       {
     4         name: 'CntChen',
     5         info: 'Front-End',
     6       },
     7       {
     8         name: 'Eva',
     9         info: 'Banker',
    10       }
    11     ],
    12 }
    • to x-www-form-urlencoded (3)
    authors[0][name]=CntChen&authors[0][info]=Front-End&authors[1][name]=Eva&authors[1][info]=Banker
    • to json (4)
    {"authors":[{"name":"CntChen","info":"Front-End"},{"name":"Eva","info":"Banker"}]}

    可见:x-www-form-urlencoded是先将对象铺平,然后使用key=value的方式,用&作为间隔。对于嵌套对象的每个字段,都要传输其前缀,如(1)中的userInfo重复传输了3次;(3)中authors传输了4次。
    如果对象是多重嵌套的,或者嵌套对象的字段较多,x-www-form-urlencoded会产生更多冗余信息。同时,x-www-form-urlencoded可读性不如json字符串。

    json的优势

    1、较小的传输量

    从前文可以看出,使用json字符串的形式,可以减少冗余字段的传输,减少请求的数据量。

    2、请求与返回统一

    目前许多前后端交互的返回数据是json字符串,这可能是考虑较小的传输量而作出的选择。同时,ES3.1添加了JSON对象,许多浏览器可以直接使用JSON对象,可以将json字符串解析为JS对象(JSON.parse),将JS对象编码为json字符串(JSON.stringify);
    所以使用json编码请求数据,其编码解码非常方便,并且可以保持与后台返回数据的格式一致。
    3、框架的支持

    目前Mvvm的前端框架如React,网络请求通常是提交一个JS对象(传输的时候编码为json字符串)。后台服务器如Koa,接收请求和响应的数据是json字符串。

    4、可读性高

     

     

    转载于:https://www.cnblogs.com/Youngly/p/8696160.html

    展开全文
  • 最合适Ajax内容编码类型 原文地址:我博客 背景 在公司开发一个页面Ajax请求使用了contentType:application/json,被后台同事要求用x-...contentType是指http/https发送信息至服务器时内容编码类型,co...
  • 1.背景本公司系统请了某公司来...表单post后,会用拦截信息包,并篡改表单编码类型,并加入一些自己的信息。再请求给后台。 form中属性 enctype="multipart/form-data":指表单中有文件,图片等上传就必须填这个属
  • 在对普通文本进行操作时候,需要知道文本的编码方式,不然读取出来的信息都是乱码。以下方法是转载别人,原理等过后再研究。 public static String codeString(String fileName) throws IOException{ File ...
  • 本文介绍如何获取文本文件的编码格式,如果用c#转换编码格式,如何获取图片文件的类型(不是以文件扩展名来判断),获取音视频文件的基本信息。 文件的字符集在Windows下有两种,一种是ANSI,一种Unicode。 对于...
  • 计算机信息表示与编码知识分析 摘要计算机...关键词信息表示信息编码信息单位内部原理 引言 随着计算机流行和普及各种类型的微型计算设备padsurface已经深入到各家各户越来越多人加入到学习计算机知识研究计算机原
  • 1、ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节...
  • Unicode utf8等编码类型的原理 1、ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个...
  • 如下代码中明显抛出了错误编码与文件地址,原为'utf-8'找到修改为gbk,gbk同理。 2、另一种pip版本代码错误 如下pip代码堆栈信息,可以直接找到encoding文件修改编解码方式。 注释出错位置,gbk改utf-8,...
  • 信息论实验-信源编码2(Lz编码和算数编码的C++实现)

    千次阅读 多人点赞 2017-08-13 17:21:36
    上一篇文章给出了Huffman编码和Shannon Fano编码的编码原理以及C++的程序,程序可以用来实现给任意类型的文件进行无损压缩,缺点是比较耗时,不能作为正常的通用压缩软件来使用,但是作为算法理解,算法思路是没有...
  • 字符编码的问题让我困惑了好久的一段时间,其实简单的想,字符编码没有什么东西的,可是想真弄明白还是花去了我一点时间,前端时间写了一个简单的log程 序,主要的工作就是支持系统运行时输出日志信息,同时允许定制...
  • 在 address_components[] 中也有一个 types[] 数组,用来表示地址各个部分的类型。示例包括门牌号码或国家/地区。(以下是类型的完整列表。)地址可能有多种类型。这些类型可能会被视为“标记”。例如,许多城市都标...
  • 在计算机内部,所有的信息最终都表示为一个二进制字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种...
  • 计算机编码指电脑内部代表字母或数字方式,常见的编码方式有:ASCII编码,GB2312编码(简体中文),GBK,BIG5编码(繁体中文),ANSI编码,Unicode,UTF-8编码等。 1.ASCII字符集 ASCII(American Standard Code for ...
  • 数据类型和字符编码

    2019-11-05 14:55:53
    数据就是我们需要的信息取出来,那不存怎么取呢?所以我们先要学习是怎么存数据 ,既然要存数据,我们不能把所有数据存成一样格式,我们做文件时候,还得有word,excel,ppt… 1.数据类型 数字(整形,长整型...
  • 我们知道,在计算机内部,所有的信息最终都表示为一个二进制字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来...
  • 信息编码:基本整型

    2012-12-19 10:41:35
    信息编码   首先,我们来考虑一下简单数据类型,如int,long,char,String等,是如何通过套接字发送和接收。从前面章节我们已经知道,传输信息时可以通过套接字将字节信息写入一个OutputStream实例中(该实例...
  • 一、认识各种编码方式ASCII 码ASCII码:上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间关系,做了统一规定。这被称为ASCII码,英文名为America Standard Code for Information Interchange 即...
  • 1、计算机编码计算机本质上存储、计算、处理的信息的载体是二进制数字,如果要展示出文本、图像、声音等多媒体信息,就需要对二进制进行编解码,其实就是人看上去或是听上去东西与计算机机器内部处理东西转化...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,444
精华内容 1,777
关键字:

信息编码的类型