展开

关键词

WEB:字符集、编码、乱码 —— 看这篇就够了

ASCII编码:ASCII字符集转换为计算机可以接受的数字系统的数的规则。使用7位(bits)表示一个字符,共128符; 3.2. 5.9.1. escape()、unescape() escape() 是字符转换为Unicode编码值。解码是通过unescape()函数。 ISO 8859-1符集内其它字符,都会以%xy格式表示(xy为字节的16进制表示); 其它字符首先会按照UTF-8规则转换为字节串,每个字节再以%xy的形式表示。 ISO8859-1符集内的字母(A-Z、a-z)、数字(0-9)、标点符号( - _ . *)不会被转换。 空格会被转换为“+”。 content-type 用于指示浏览器采用何种编码解析数据流; 当使用 writer 回写数据时,response.setCharacterEncoding 用于指示服务器采用何种编码字符流转换为节流

2.5K20

Java类加载-加载

我们已经整个Class的构成讲述完了,不清楚的同学可以看一下关于Class文件的介绍,但是空有Class并没有什么用,在Class中的各种描述信息都需要被加载到虚拟机以后才能运行使用。 JVM并没有对什么时候开启加载阶段进行强制约束,但是对于初始化阶段严格规定了有且只有5种情况必须立即对类进行初始化: 遇到new(new关键实例化对象)、getstatic(读取一个类的静态字段(被final 类加载-加载阶段 加载是类加载的第一个阶段,加载阶段的主要目标是: 通过一个类的全限定名来获取定义此类的二进制字节流 节流的静态信息结构转换为方法区(元数据区)的运行时数据结构 在内存中生成一个代表这个类的 java.lang.Class对象,作为方法区(元数据区)这个类的各种数据的访问入口 二进制字节流的来源可以是(但不仅仅是): Class文件 Zip包(也就是我们经常使用的JAR包、WAR包) 网络 其他文件,例如JSP 数据库中读取(二进制字节流的内容存储到数据库中) 除了上述五种二进制字节流,我们甚至可以在程序运行期间动态生成二进制字节流(动态代理技术)。

16740
  • 广告
    关闭

    90+款云产品免费体验

    提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    python decode encode

    decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示gb2312编码的字符串str1换成unicode编码。 encode的作用是unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示unicode编码的字符串str2换成gb2312编码。 *编码(动词):按照某种规则(这个规则称为:编码(名词))“文本”转换为“字节流”。(在python中:unicode变成str)  *解码(动词):“字节流”按照某种规则转换成“文本”。 就像,打开zip文  件的时候,你要确保它确实是zip文件,而不仅仅是伪造了扩展名的zip文件。  >>>>> > 这个非常好,但还不是很明白  > “文本”转换为“字节流”。

    19910

    java学习与应用(3.4)--File类、IO流

    String的getBytes方法,字符串转换为字节数组,方便写入 构造方法传入两个参数,第二个参数定义为追加写开关,默认flase(重建文件写)。 使用new String(bytes)构造方法,字节数组转化为字符串。 字符流 Reader字符流[非字节流],针对中文等非ASCII读写。read(读字符,字符数组)方法,close关闭。 FileWriter类,创建对象后,使用write写入(自动字符转换为字节,暂写内存[不同于写字节]),然后数据刷新flush方法刷新到文件中。close方法关闭流,也会执行flush。 InputStreamReader,通过默认UTF-8或指定码表解码字节流读取。OutputStreamWriter流,以默认码表或自定义码表字符流转换为节流。 ObjectInputStream的构造方法传入FileInputStream,通过readObject从文件中读取对象,最后关闭close。对象Object o强,可以使用其方法,访问变量等。

    20930

    Controller层代码中FileController.java分享

    ,在项目压缩包内请勿包含中文文件名,但是在页面中的项目名可以起名为中文, * 可以用org.apache.tools.zip压缩/解压缩zip文件,解决中文乱码问题。 "; } /** * 上传压缩zip项目文件 * @param file zip压缩文件 * @param fileName 项目的命名,我们解压缩的文件放到以项目名命名的文件夹内 StringBuilder stringBuilder = new StringBuilder(); //节流向字符流的转换 IOException e) { e.printStackTrace(); } return null; } /** * 项目压缩后以字节流的方式发送 ,windows和linux不同, // 包含文件名,我们提取出来,作为fileName,分隔符可能为/或\或\\,其中\要意为\\ String fileName

    29000

    类加载过程

    Class 文件呢? 加载 类加载过程的第一步,主要完成下面 3 件事情: 通过全类名获取定义此类的二进制字节流 节流所代表的静态存储结构转换为方法区的运行时数据结构 在内存中生成一个代表该类的 Class 对象,作为方法区这些数据的访问入口 比如:比较常见的就是从 ZIP 包中读取(日后出现的 JAR、EAR、WAR 格式的基础)、其他文件生成(典型应用就是 JSP)等等。 基本数据类型的零值 : (图片来自《深入理解 Java 虚拟机》第 3 版 7.33 ) 解析 解析阶段是虚拟机常量池内的符号引用替换为直接引用的过程。 综上,解析阶段是虚拟机常量池内的符号引用替换为直接引用的过程,也就是得到类或者字段、方法在内存中的指针或者偏移量。

    11720

    java IO流详尽解析「建议收藏」

    ; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; /** * 解压缩一个压缩文件中包含多个文件的情况 * */ 当你如果想问文件中追加内容的时候,可以使用将上面的声明out的哪一行换为: Writer out =new FileWriter(f,true); 这样,当你运行程序的时候,会发现文件内容变为:hellohello 如果想在文件中换行的话,需要使用“\r\n”比如str变为String str=”\r\nhello”;这样文件追加的str的内容就会换行了。 字节流和字符流转换实例: 【案例】字节输出流转化为字符输出流 /** * 字节输出流转化为字符输出流 * */ import java.io.*; class hello{ public static OutputStreamWriter(new FileOutputStream(file)); out.write("hello"); out.close(); } } 【案例】字节输入流转换为字符输入流

    4720

    python的encode和decode

    python的encode和decode误读总结     最近在学Python,对编码有个误解的地方     下面是错误的理解:     encode():编码,将对象的编码转换为指定编码格式,按照字面理解 换成Unicode编码。     encode的作用是unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示Unicode编码的字符串str2换成gb2312编码。     *编码(动词):按照某种规则(这个规则称为:编码(名词))“文本”转换为“字节流”。(在python中:unicode变成str)      *解码(动词):“字节流”按照某种规则转换成“文本”。 例如,视频要编码然后保存在文件中,播放的时候需要解码才能观看。      unicode:unicode定义了,一个“字符”和一个“数字”的对应,但是并没有规定这个“数字”在计算机中怎么保存。

    38120

    如何根据后端返回的 url 下载 json 文件

    例如,同样位置的静态资源,一个是 json,一个是 .zip 压缩文件。两个 url,你会发现在浏览器窗口执行 json 文件的 url, 浏览器执行的是预览模式,直接打开了文件。 而在浏览器窗口输入 .zip 压缩文件的 url,浏览器并没有执行预览模式, 而是执行了下载模式,直接下载文件了。 返回的字节流 (字符流) 转换为 blob 对象 const blob = new Blob([res.data]) // 节流(字符流)转换为 blob 对象 复制代码 4. ://localhost:8278/package.json', config).then(res => { const blob = new Blob([res.data]) // 节流 (字符流)转换为 blob 对象 this.blobDownload(blob) }) }, /** * 下载文件:下载 blob 对象形式的文件

    300100

    JVM之类加载阶段详解

    JVM之类加载阶段详解 类加载阶段总览 加载 获取二进制流 节流换为运行时数据结构 堆中生成Class对象 特殊 连接 验证 准备 解析 名词解释 何时进行 解析哪些类型 初始化 类 接口 因此可以得出加载阶段做的事情: 1、通过一个类的全限定名来获取定义此类的二进制字节流 2、这个字节流所代表的的静态存储结构转换为方法区的运行时数据结构 3、在堆内存中生成一个代表这个类的java.ang.Class 节流换为运行时数据结构 要想把字节流转换成方法区的运行时数据结构,自然一定是要经过一些验证,也就是验证阶段的文件格式验证; 文件格式验证阶段没有出现问题的话,接下来就会按照虚拟机中方法区的数据存储格式数据存储到方法区之中 2.1,文件格式验证 该步骤在上面的加载过程中已经提到,当加载阶段节流的数据存储到方法区中的数据结构中时需要对Class的文件格式进行验证。 直接引用就是Class文件中的符号引用(也就是字段/类/方法的属性表)转换为真实的内存地址(访问读取修改就是基于真实的内存地址来操作的,为了之后的操作)。

    5510

    Python中字符串、列表、元组、字典之间的相互转换

    字符串详解:走起 二、列表(list) 列表字符串 利用‘’.join()列表中的内容拼接程一个字符串 Python join() 方法用于序列中的元素(必须是str) 以指定的字符(’'中指定的 列表字典 利用for in rang两个列表转换为字典 list_1 = ['a', 'b', 'c'] list_2 = [1, 2, 3] dict_1 = {} for i in range( 利用python内置方法dict()和zip()两个列表转换为字典 dict() 函数用于创建一个字典。 元组转换为列表 使用方法list() list() 方法用于元组转换为列表。 语法:list( tup ) tup – 要转换为列表的元组。 字典转换为列表 使用方法 list() 字典在转换为列表之后,只会保存关键 dict_1 = {"name":"zhangsan", "age":18} list_1 = list

    2.8K10

    JavaIO之IO体系类整体设计思路 流的概念以及四大基础分类

    int i = 0; 读取到int时,我们不知道他是不是关键,可能是一个int0的变量名读取到下一个的时候,发现是空格,我们才能确定,他就是一个关键但是下面的空格已经被读取了,我们可能希望接下来的扫描能够读取到空格 (java.util.zip) ZipInputStream (java.util.zip) JarInputStream (java.util.jar) ? Java 对象的基本数据类型和图形写入 OutputStream可以使用 ObjectInputStream 读取(重构)对象通过在流中使用文件可以实现对象的持久存储如果流是网络套接流,则可以在另一台主机上或另一个进程中重构对象 Reader的类 InputStreamReader 转换为ReaderInputStreamReader 是字节流通向字符流的桥梁它使用指定的 charset 读取字节并将其解码为字符它使用的字符集可以由名称指定或显式给定 不过需要注意,Reader字符流的装饰器模式应用跟字节流的有些差别 在字节流中,扩展功能都是通过FilterInputStream 或者 FilterOutputStream  然而,在我们的Reader

    66920

    重新写了一个拼音输入法词库转换小程序

    之前,由于我要从QQ拼音平台转换到搜狗拼音上,所以我写了一个小程序把QQ拼音词库转换为搜狗拼音词库。 这两天我给手机换了百度拼音输入法,之所以用这个输入法是因为这个输入法可以词库保存到服务器上,那么我重装系统后重新安装输入法就可以把服务器上我的词库同步到我的手机上了。 小程序运行的界面如图所示: 以QQ拼音百度为例,选择QQ拼音词库的路径,长度过滤默认是5,也就是说只要大于等于5个的词就不转换,词频过滤默认是3,也就是说小于3的词频的词都不会转换,只有大于等于3 然后点击“QQ百度”按钮,系统将成功转换符合条件的词并提示完成。 把转换后的词文件复制到手机上,然后运行百度手机输入法的用户词库管理-》用户词恢复-》从文本导入,即可。 /Files/studyzy/QQPY2SGPY1.2.zip 现将程序源代码放出来,希望对需要的人士有所帮助。可执行文件在bin目录的Debug目录中,需要.net 2.0才能运行。

    12030

    Java 15 - 类加载过程

    加载 加载过程实现三个事: 通过类的全限定名来获取定义此类的二进制字节流. 这个字节流所代表的静态存储结构转化为方法区的运行时存储结构. 二进制的获取方法: 从ZIP包中获取, 这是JAR, EAR, WAR格式的基础. 从网络中获取, 如Applet. 运算时计算生成, 运用最多的就是动态代理技术. 由其他文件生成, 如JSP. 从数据库中读取. 验证 确保Class文件的字节流中包含的信息符合虚拟机的要求, 并且不会危害虚拟机的安全. 文件格式验证: 验证字节流是否符合Class文件格式规范, 并能被虚拟机处理. 元数据验证: 对字节码进行语义分析, 确保符合Java规范要求. public static int value = 123; 如果类变量是常量, 那么会按照表达式赋值, 而不是赋值为0. public static final int value = 123; 解析 常量池的符号引用替换为直接引用

    13120

    【Java基础-3】吃透Java IO:字节流、字符流、缓冲流

    节流和字符流的其他区别: 字节流一般用来处理图像、视频、音频、PPT、Word等类型的文件。字符流一般用于处理纯文本类型的文件,如TXT文件等,但不能处理图像视频等非文本文件。 用一句话说就是:字节流可以处理一切文件,而字符流只能处理纯文本文件。 字节流本身没有缓冲区,缓冲字节流相对于字节流,效率提升非常高。 File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 File(URI uri) 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。 "); File a = new File("C:/Mu/a.zip"); File b = new File("C:/Mu/b.zip"); StringBuilder sb = new

    6830

    Java IO结构各种流详解

    发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。   把Java对象转换为字节序列的过程称为对象的序列化。    程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。 字节流与字符流 在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。 File zipFile = new File("tg.zip") ; // 定义压缩文件名称 InputStream input = null ; // 定义文件输入流 此File 类的实例是指向一个压缩 *.zip 文件。 ,字符流就不做演示了,直接把字节流换为字符流即可 码字不易,转载请指明出处

    1K90

    python置矩阵代码_python 矩阵

    5.矩阵置 给定:L=[[1,2,3],[4,5,6]] 用zip函数和列表推导式实现行列def transpose(L): T = [list(tpl) for tpl in zip(*L)] return T python 字符串如何变成矩阵进行矩阵置 如输入一串“w,t,w;t,u,u;t,u,u”将其变成矩阵进行置操作 需CSS布局HTML小编今天和大家分享: 你需要置一个二维数组,行列互换 ’,’第几个sheet’, header = False) #读取文件 比如 df = pd.read_excel(‘C:/your_data.xlsx’,0, header = False) df_T = df.T #获得矩阵的置 df_T.to_excel(‘要 matlab里如何实现N行一列的矩阵变换成一行N列的矩阵 就是说A=1 2 3 4 如何使用函数A变成 B=1 2 3 4 5 有两种方法可以实现 : 置矩阵: B = A’; 通用方法:reshape()函数 示例如下: 说明:reshape(A,m,n) 表示矩阵A变换为m行n列的矩阵,通常用于矩阵形状的改变,例如下面代码原来的1行4列矩阵转换为

    8050

    Android 类加载器

    加载类的二进制流的方法 从zip包中读取。 我们常见的动态代理技术,在java.reflect.Proxy中就是用ProxyGenerateProxyClass来为特定的接口生成代理的二进制流 验证 验证是连接阶段的第一步,这一阶段的目的是为了确保 Class 文件的字节流中包含的信息符合当前虚拟机的要求 此阶段保证输入的字节流能正确地解析并存储于方法区之内,格式上符合描述一个 Java类型信息的要求。 解析 虚拟机常量池内的符号引用替换为直接引用的过程。 class 文件二进制数据放入方法区内,然后在堆内(heap)创建一个 java.lang.Class 对象,Class 对象封装了类在方法区内的数据结构,并且向开发者提供了访问方法区内的数据结构的接口

    11630

    UNICODE,GBK,UTF-8

    -8必须先uncode码,再utf-8就OK了. 例如“汉”的Unicode编码是6C49。那么写到文件里时,究竟是6C写在前面,还是49写在前面?如果6C写在前面,就是big endian。 需要注意,UltraEdit在打开utf-8编码的文本文件时会自动转换为UTF-16,可能产生混淆。你可以在设置中关掉这个选项。更好的工具是Hex Workshop。 如果我们收到UTF-16节流“594E”,那么这是“奎”还是“乙”? Unicode规范中推荐的标记字节顺序的方法是BOM。 例如Windows的记事本打开了一个文本文件,里面的内容是字节流:BA、BA、D7、D6。Windows应该去怎么解释它呢?

    1.1K20

    为什么一个还没毕业的大学生能够把 IO 讲的这么好?

    字符流:以字符为单位(1符 = 2节)做数据的传输 “字符流的本质也是通过字节流读取,Java 中的字符采用 Unicode 标准,在读取和输出的过程中,通过以字符为单位,查找对应的码表字节转换为对应的字符 OutputStream 基础之上提供了增强的功能,即可以方便地输出各种类型的数据(而不仅限于byte型)的格式化表示形式,且 PrintStream 的方法从不抛出 IOEception,其原理是写出时各个数据类型的数据统一换为 ,实现高效地读取字符 InputStreamReader 是一种转换流,可以实现从字节流换为字符流,字节数据转换为字符 Writer Reader 是字符输出流的抽象基类,它内部的重要方法如下所示。 OutputStreamWriter 字符流转换为节流字符写出到指定位置 字节流与字符流的转换 从任何地方把数据读入到内存都是先以字节流形式读取,即使是使用字符流去读取数据,依然成立,因为数据永远是以字节的形式存在于互联网和硬件设备中 所以 Java 提供了两种转换流: InputStreamReader:从字节流换为字符流,字节数据转换为字符数据读入到内存 OutputStreamWriter:从字符流转换为节流字符数据转换为字节数据写出到指定位置

    27630

    扫码关注腾讯云开发者

    领取腾讯云代金券