编码转换

文本文件与二进制文件区别

我的梦境 提交于 2019-12-22 00:38:59
一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。 从上面可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8)。而二进制文件可看成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。大家可能对BMP文件比较熟悉,就拿它举例子吧,其头部是较为固定长度的文件头信息,前2字节用来记录文件为BMP格式,接下来的8个字节用来记录文件长度,再接下来的4字节用来记录bmp文件头的长度。 二、文本文件与二进制文件的存取   文本工具打开一个文件的过程是怎样的呢?拿记事本来说,它首先读取文件物理上所对应的二进制比特流,然后按照你所选择的解码方式来解释这个流,然后将解释结果显示出来。一般来说,你选取的解码方式会是ASCII码形式(ASCII码的一个字符是8个比特),接下来,它8个比特8个比特地来解释这个文件流。例如对于这么一个文件流"01000000_01000001_01000010_01000011"(下划线''_'',为了增强可读性手动添加的),第一个8比特'

文本文件和二进制文件的区别

会有一股神秘感。 提交于 2019-12-22 00:38:46
文本文件: 文本文件是一种计算机文件,它是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。 特别的是,文本文件是指以ASCII码方式(也称文本方式)存储的文件,更确切地说,英文、数字等字符存储的是ASCII码,而汉字存储的是机内码。文本文件中除了存储文件有效字符信息(包括能用ASCII码字符表示的回车、换行等信息)外,不能存储其他任何信息。 文本文件是一种由若干行字符构成的 计算机文件 。文本文件存在于计算机文件系统中。通常,通过在文本文件最后一行后放置文件结束标志来指明文件的结束。 文本文件是指一种容器,而纯文本是指一种内容。文本文件可以包含纯文本。 一般来说,计算机文件可以分为两类:文本文件和 二进制文件 。[2] 格式 ASCII ASCII 标准使得 文件 只含有ASCII字符的文本文件可以在 Unix 、 Macintosh 、 Microsoft Windows 、 DOS 和其它 操作系统 之间自由交互,而其它格式的文件是很难做到这一点的。但是,在这些操作系统中,换行符并不相同,处理非ASCII字符的方式也不一致。 MIME 文本文件在MIME标准中的类型为“text/plain”,此外,它通常还附加编码的信息。在Mac OS X出现前,当Resource fork指定某一个文件的类型为“TEXT”时,Mac OS就认为这个文件是文本文件。在Windows中

url参数中出现+、空格、=、%、&、#等字符的解决办法

落花浮王杯 提交于 2019-12-21 10:40:39
package com.zhicall.media.util; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.commons.codec.binary.Base64; public class Base64Image { public static void main(String[] args) { // 测试从Base64编码转换为图片文件 String strImg = "post过来的base64图片编码"; //tomcat下 使用base64上传 会将+变成空格,所以转图片前要进行转换 strImg = strImg.replaceAll(" ", "+"); GenerateImage(strImg, "D:\\wangyc.jpg"); // 测试从图片文件转换为Base64编码 //System.out.println(GetImageStr("d:\\wangyc.jpg")); } /* public static String GetImageStr(String

request和response的中文乱码问题

戏子无情 提交于 2019-12-21 09:15:17
     request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符, 服务器获取到的请求参数的值是乱码;   response乱码指的是:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码; 乱码产生的原因:   不管是request乱码还是response乱码,其实都是由于客户端(浏览器)跟服务器端采用的编码格式不一致造成的。 以request乱码为例:浏览器向服务器发送请求,因为浏览器与服务器之间的通信实质上是socket流,所以要先将请求参数(字符)转换成字节,也就是编码过程,服务器接收到请求参数后进行解码(字节转字符),然后封装到request对象中。如果客户端的编码与服务器端的解码不统一,就会导致通过request获取到的请求参数的值是乱码。 解决乱码方式: 一、response乱码 服务器发给浏览器的数据默认是按照ISO-8859-1编码,浏览器接收到数据后按照默认的字符集进行解码后显示,如果浏览器的默认解码字符集不是ISO-8859-1,就出现乱码。 对于response乱码,只需要在服务器端指定一个编码字符集,然后通知浏览器按照这个字符集进行解码就可以了。有三种方式: 方式1:response.setCharacterEncoding("utf-8”);//设置服务器端的编码,默认是ISO-8859-1;该方法必须在response

各种进制编码的转化

自古美人都是妖i 提交于 2019-12-21 06:01:04
/** * 解析utf8字符串到16进制 */ function parseUtf8StringToHex ( input ) { input = unescape ( encodeURIComponent ( input ) ) ; var length = input . length ; // 转换到字数组 var words = [ ] ; for ( var i = 0 ; i < length ; i ++ ) { words [ i >>> 2 ] |= ( input . charCodeAt ( i ) & 0xff ) << 24 - i % 4 * 8 ; } // 转换到16进制 var hexChars = [ ] ; for ( var _i = 0 ; _i < length ; _i ++ ) { var bite = words [ _i >>> 2 ] >>> 24 - _i % 4 * 8 & 0xff ; hexChars . push ( ( bite >>> 4 ) . toString ( 16 ) ) ; hexChars . push ( ( bite & 0x0f ) . toString ( 16 ) ) ; } return hexChars . join ( '' ) ; } /** *

C# URL编码转换 URL转码 UrlDecode UrlEncode

时光毁灭记忆、已成空白 提交于 2019-12-21 01:15:57
using System.Web; 引用system.web。   textBox2.Text = System.Web.HttpUtility.UrlDecode(textBox1.Text, System.Text.Encoding.GetEncoding("GB2312"));//将Url中的编码转换为简体汉字   textBox2.Text = System.Web.HttpUtility.UrlEncode(textBox1.Text, System.Text.Encoding.GetEncoding("GB2312"));//将简体汉字转换为Url编码   textBox2.Text = System.Web.HttpUtility.UrlDecode(textBox1.Text, System.Text.Encoding.GetEncoding("BIG5"));//将Url中的编码转换为繁体汉字   textBox2.Text = System.Web.HttpUtility.UrlEncode(textBox1.Text, System.Text.Encoding.GetEncoding("BIG5"));//将繁体汉字转换为Url 来源: https://www.cnblogs.com/q4002945/p/5934217.html

UTF-8编码规则(转)

ⅰ亾dé卋堺 提交于 2019-12-21 01:11:45
UTF-8编码规则(转) UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织,所以可以看出unicode是给出一个字符的范围,定义了这个字是码值是多少,至于具体的实现方式可以有多种多样来实现。 UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。UTF-8最多可用到6个字节。 如表: 1字节 0xxxxxxx 2字节 110xxxxx 10xxxxxx 3字节 1110xxxx 10xxxxxx 10xxxxxx 4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 因此UTF-8中可以用来表示字符编码的实际位数最多有31位,即上表中x所表示的位。除去那些控制位(每字节开头的10等),这些x表示的位与UNICODE编码是一一对应的

SecureCRT/PUTTY中使用VIM中文乱码问题

非 Y 不嫁゛ 提交于 2019-12-21 00:00:41
如果使用SSH终端SecureCRT (PUTTY也一样)程序连接linux服务器,对于服务器返回的中文字符默认情况会显示乱码,解决方法很简单,打开会话选项对话框,找到外观,把字符编码改成你服务器上使用的编码方式即可,一般为UTF-8。 不过,我这里遇到了点问题是关于一个UTF-8的文档,使用cat可以正常显示中文,使用vim打开却显示为乱码,看来肯定是vim的问题了。 经过查找和尝试,设置一下vim的内部编码格式得到解决: 设置后: 另,转一篇关于vim编码的文章 原文: http://edyfox.codecarver.org/html/vim_fileencodings_detection.html 在 Vim 中, 有四个与编码有关的选项, 它们是: fileencodings 、 fileencoding 、 encoding 和 termencoding 。 在实际使用中, 任何一个选项出现错误, 都会导致出现乱码。 因此, 每一个 Vim 用户都应该明确这四个选项的含义。 下面, 我们详细介绍一下这四个选项的含义和作用。 1 encoding encoding 是 Vim 内部使用的字符编码方式。 当我们设置了 encoding 之后, Vim 内部所有的 buffer、 寄存器、 脚本中的字符串等, 全都使用这个编码。 Vim 在工作的时候,

delphi URL 编码的转换

删除回忆录丶 提交于 2019-12-20 23:59:22
从delphi的角度看Google(谷歌)URL编码解码方式 在网上搜索了一下,似乎没有什么关于google的URL编码解码的很详细的资料,因此在这里写一下,希望给有用的人提供一点帮助。 使用google谷歌搜索一下关键词,对应的编码如下: 刀:%E5%88%80 刀具:%E5%88%80%E5%85%B7 刀具网:%E5%88%80%E5%85%B7%E7%9A%84 因此可见,google对URL的编码并非简单的httpencode编码,因为httpencode编码后的字符串应该是带有两个百分号的,而这个是三个百分号。多尝试一下就不难发现googleURL的编码解码规则如下: 1、编码,先UTF8编码,然后再URL编码。 使用delphi编码的方法:加入待编码原始字符串为OiginStr,则编码后的字符串为: NewStr:=HttpEncode(UTF8Encode(OiginStr)) 其中HttpEncode函数需要用到HttpApp,记得uses中加入。 2、解码,先URL解码,然后再UTF8解码。 使用delphi解码的方法:加入待解码字符串为NewStr,则解码后的原始字符串为: OiginStr:=UTF8Decode(HttpDecode(NewStr)) 其中HttpEncode函数需要用到HttpApp,记得uses中加入。 相对来说百度就简单得多

jsp乱码问题的解决(引的)

给你一囗甜甜゛ 提交于 2019-12-20 11:45:58
这是我搜索到的。作者总结的很好。 1、 最基本的乱码问题。 这个乱码问题是最简单的乱码问题。一般新会出现。就是页面编码不一致导致的乱码。 <%@ page language="java" pageEncoding="UTF-8"%> <%@ page contentType="text/html;charset=iso8859-1"%> <html> <head> <title>中文问题</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> </head> <body> 我是个好人 </body> </html> 三个地方的编码。 第一个地方的编码格式为jsp文件的存储格式。Ecljpse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。 第二处编码为解码格式。因为存为UTF-8的文件被解码为iso8859-1,这样 如有中文肯定出乱码。也就是必须一致。而第二处所在的这一行,可以没有。缺省也是使用iso8859-1的编码格式。所以如果没有这一行的话,“我是个好人”也会出现乱码。必须一致才可以。 第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式没有关系。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式