这就是为什么我们在浏览器的地址栏中能看到中文,但是把地址拷贝出来后中文就变成了一些奇怪的串了。
Python的requests库是一个非常好用的库,这应该已经是大多写过爬虫的人的共识了。它的简洁易用给我们带来很大方便。然而,它也并不是非常完美。今天我们就说说它在处理中文编码方面的不足。
ASCII,ISO-8859-1,GB2312,GNBK,UTF-8,UTF-16等
基于hadoop+大数据分析的的校园图书推荐系统统,系统采用多层MVC软件架构,采用Java springboot框架集成hadoop、hbase实现大批量图书情况下的可视化分析与计算。计算不同图书之间的相似程度,以及通过协同过滤及图书特征提取的方式,实现在用户与图书,用户与用户之间,发现关联性,从而实现校园图书的精准推荐功能等。
最近项目中涉及到了解析文件内容的需求,文件中全都是中文,由于这一过程中碰到的乱码问题实在过多,所以特地花时间研究了一下中文编码。本文中先介绍一下ASCII,GB2312,GBK和GB18030编码。
英文字母再加一些其他标点字符之类的也不会超过256个,用一个字节来表示一个字符就足够了(2^8 = 256)。但其他一些文字不止这么多字符,比如中文中的汉字就多达10多万个,一个字节只能表示256个字符,肯定是不够的,因此只能使用多个字节来表示一个字符。
在上世纪八十年代的时候,发送Email只允许使用7bits(即每个字节的8bits,最高位固定为0,只使用后面7bits)。早期的一些电脑操作系统也是基于ASCII(每字节最高位固定为0)。我们知道1字节等于8bits,对于英语国家来说,ASCII编码已经能够满足日常邮件内容。ASCII只有128种字母或符号,采用7bits足够了。但是,对于中文来说只使用7bits是远远不够的。当时已经存在GB2312字符集,每个中文汉字可以使用2字节(16bits)表示出来,GB2312总共定义了6000多个中文汉字或标点符号,足够日常使用。比如“国家”的“国”字,在GB2312中编码为0xB9FA,二进制表示为“10111001 11111010”,占据两个字节。
在很多项目里,或者一些应用上,我们经常需要把一些文件导入到SAP系统里,最经常我们使用的读取数据的方法就是使用GUI_UPLOAD这个FM.在这个FM中有个CODEPAGE,是用来指定代码页的. 如果我们导的是中文的话,我们经常使用的是8400.当然还有8401,8411等等. 主要介绍一下8400/8401.因为大家最常用的是8400.看8400的介绍上说,是based on GB2312-EUC版本,WINDOWS的代码页就是CP936.8401使用的就是GB18030 2000编码.那么他们的区别在哪里呢. 1、 GB2312 GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。 在windows中的代码页是CP936 2、 GBK GBK最初是由微软对GB2312的扩展,也就是CP936字码表 (Code Page 936)的扩展(原来的CP936和GB 2312-80一模一样),最初出现于Windows 95简体中文版中,由于Windows产品的流行和在大陆广泛被使用,中华人民共和国国家有关部门将其作为技术规范。注意GBK并非国家正式标准,只是国家技术监督局标准化司、电子工业部科技与质量监督司发布的“技术规范指导性文件”。虽然 GBK收录了所有Unicode 1.1及GB 13000.1-93之中的汉字,但是编码方式与Unicode 1.1及GB 13000.1-93不同。仅仅是GB 2312到GB 13000.1-93之间的过渡方案。GBK收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。 GBK作为对GB2312的扩展,在现在的windows系统中仍然使用代码页CP936表示,但是同样的936的代码页跟一开始的936的代码页只支持GB2312编码不同,现在的936代码页支持GBK的编码,GBK同时也向下兼容GB2312编码。 3、 GB18030 2000年的GB18030取代了GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。 GB18030在windows中的代码页是CP54936。 4、 GB13000 GB13000等同于国际标准的《通用多八位编码字符集 (UCS)》 ISO10646.1,就是等同于Unicode的标准,代码页等等的都使用UTF的一套标准。 从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。
编码在我们日常开发过程中经常有遇到,常见的编码格式有ASCII、ISO-8859-1、GB2312、GBK、GB18030、UNICODE、UTF-8、UTF-16等,其中GB2312、GBK、GB18030、UTF-8、UTF-16都可以用来表示中文,那么哪种存储中文会比较合适呢,下面会对这几种编码一一介绍便会有结论。 为什么有编码 我们知道计算机中最小的存储单位是字节(byte),一个字节所能表示的字符数又有限,1byte=8bit,一个字节最多也只能表示255个字符,而世界上的语种又多,都有各种不
对于很多人来说,python的中字符转码是一件很头疼的事情,本来期望结果输出的是中文,结果来一段像这样\xe4\xbd\xa0\xe5\xa5\xbd像是乱码的字符串。
中文系统bgk 回忆上次内容 汉字字形通过 点阵式打字机像素级寻址的屏幕进入了计算机的世界📷添加图片注释,不超过 140 字(可选)在海峡对岸的台湾同胞 也进入了汉字时代他们会使用GB2312编码吗? 能互通吗?🤔中国台湾 BIG5 码 是由 5 个公司联合制作的收录次序 取决于 频率 然后是 笔画数然后是 康熙字典同时用 BIG5 编码和解码也是没有问题的 但如果用BIG5编码却用gb2312解码就会有问题📷添加图片注释,不超过 140 字(可选)不过存储的内容在文件里 系统不知道用
大家好,又见面了,我是你们的朋友全栈君。 字符乱码的事,估计大家都遇到过,很烦,什么utf-8、GBK、GB2312转来转去,不知道什么时候才能转正常。我们做个试验,如果你是windows系统,打开记事本,新建一个文件,输入”联通”两个字之后,保存,关闭,然后再次打开,出现了什么现象?乱码!那你赶紧去找IT吧,你中招了!开玩笑的,这是著名的“windows联通之谜事件”。继续往下看,后面会有谜底的解释。那么我们就讨论下字符编码哪些事吧,首先我们看几个真实遇到的乱码的故障实例。
这篇文章将是大猫《如何搞定头疼的编码》一文的一部分,当时本来想做一个完整的有关“R与编码”的笔记,没想到后来洋洋洒洒写了六七千字,估计一时半会也完成不了,所以先选出其中有意思的一节同大家分享。
SQL语句是SELECT * FROM news WHERE tid='{$id}',根据文章的id把文章从news表中提取出来,在$sql之前,我们只用了限制函数addslashes函数,对$id进行转义,只要我们输入参数在单引号中,就逃逸不出单引号的限制,从而无法注入。
如上面代码,str\str1\str2均为字符串类型(str),给字符串操作带来较大的复杂性。
一、背景知识 GB 2312-80 是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,由中国国家标准总局发布,1981年5月1日实施。GB2312 编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持 GB 2312。
GB2312、GBK、GB18030等GB类汉字编码方案的具体实现方式是怎样的?区位码是什么?国标码是什么?内码、外码、字形码又是什么意思?它们是如何转换的,又为什么要这样转换?
American Standard Code for Information Interchange。最早最通用的单字节编码系统,因为发明时间早,所以ASCII编码表的设计较为简单。
MySQL 字符编码集中有两套 UTF-8 编码实现:utf8 和 utf8mb4。
Java Source File 中Default encoding 改写成UTF-8(你所需的编码类型) 然后Update,OK确定就可以了。
我们学习Python编程,经常对字符串这样的数据进行处理。我们也都知道计算机内部信息是采用二进制编码的,那么这其中的处理原理是什么呢?本篇就计算机中关于编码的知识进行总结。 一、为什么计算机内部信息采用二进制编码 计算机是由逻辑电路组成的,而逻辑电路只有接通与断开两个状态,正好可以对映二进制的“1”与“0”。这样的计算机设计在技术上会简单许多。 二、计算机编码的由来 计算机内部信息采用二进制编码,这决定了它只能直接识别0和1。我们所有各类型数据也都需要被转换为二进制0和1的序列存放在计算机中的。但是这样就产
我写这个帖子的意图,在于三个: 1.用代码生成代码的思维。 2.shell编程的思路。 3.裁剪字库的具体程序。 我打算分为三节来说: 第一节讲裁剪词库的意义以及使用场合; 第二节讲如何用shell来解决这个问题; 第三节讲如何测试结果。 很多带有点阵液晶的硬件项目可能需要显示汉字、ASCII字符,有的廉价的液晶里没有字库,有的液晶里带有了字库但可能需要其他字体的支持。这种时候我们就需要使用外置的字库了。一般一个字库需要几百K大小,当然对于有外置flash的情况下根本不算
| 导语 本文主要介绍了业务中常见的ASCII、GB2312、GBK、GB18030、UTF8、ANSI、Latin1中文编码。如果你在业务中也曾经被乱码搞晕过,不妨我们一起探究一下。 PS:文末有今天儿童节粉丝福利活动哦! 最近我的业务中涉及到了包含中文文本的内容解析。业务场景是用户上传一个包含中文的文本文件,我们需要根据约定好的字段格式解析该文本,并将内容导入到数据库中。但用户所传上来的文件中文编码经常会不一样,于是我们的数据库中经常会有乱码出现。为了解决该问题,就有了这篇文章…… 1、字符编码要做
以下内容转自博客:http://blog.chinaunix.net/uid-22670933-id-1771613.html。
字符编码是计算机技术的基石,本文希望帮助大家彻底梳理清楚字符编码问题,不仅知其然,还知其所以然,摆脱被中文乱码支配的感觉。
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码),是一种单字节编码。计算机起源于美国,早期计算机中使用的只有英文,没有其他的语言,而单字节可以表示2**8 -1即255个字符,可以表示所有的英文字符及许多控制符号。而且只用了一半。
前言 在我的工作中,常常会遇到形形色色的字符编码,对于各种编码技术本人了解的也不是很多。 本篇是我了解编码系列的开篇,主要内容讲述字符编码的基本概念,然后介绍一下常见的字符编码,最后说明一下 Java
用户在浏览器输入网址之后,经过DNS 服务器,找到服务器主机,向服务器发出访问请求,服务器经过解析之后,发送给用户的浏览器HTML、JS、CSS等文件,浏览器解析出来呈现给用户。
ANSI:最早的时候计算机ASCII码只能表示256个符号(含控制符号),这个字符集表示英文字母足够,其中,我们键盘上可见的符号的编码范围是从32到126(大小写英文字母、数字、英文符号等)。但表示汉字、日语、韩语就不太够用了,汉字常用字有3000多个。
在很久很久以前,美国人发明了计算机,计算机只能处理数字也就是把文字转换为8个bit也就是一个字节,8个bit最大能表示的数字为255,而[A-Z]、[a-z]、[0-9]再加上键盘上的一些符号正好255个,所以ASCII编码就成为了美国人的标准编码(用一个字节代表一个字母或者符号),正好也满足了美国人的需求。
学习python3第一句大概率是 print(“hello world”) 吧?既然可以逐行逐个地输出字符,那么把字符组成汉字应该也不难吧?经过一番搜索与尝试,实现了通过python print来打印点阵字的小代码,请看——
================================================起================================================
UNICODE,GBK,UTF-8区别 简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与gbk就是不一样的,假设uncode为a040,gbk为b030,而uft-8码,就是把那个值表现的形式.utf-8码完全只针对uncode来组织的,如果GBK要转UTF-8必须先转uncode码,再转utf-8就OK了. 详细的就见下面转的这篇文章. 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢? 我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)。但这些标记是基于什么标准呢? 问题二: 最近在网上看到一个ConvertUTF.c,实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于Unicode(UCS2)、GBK、UTF-8这些编码方式,我原来就了解。但这个程序让我有些糊涂,想不起来UTF-16和UCS2有什么关系。 查了查相关资料,总算将这些问题弄清楚了,顺带也了解了一些Unicode的细节。写成一篇文章,送给有过类似疑问的朋友。本文在写作时尽量做到通俗易懂,但要求读者知道什么是字节,什么是十六进制。 0、big endian和little endian big endian和little endian是CPU处理多字节数的不同方式。例如“汉”字的Unicode编码是6C49。那么写到文件里时,究竟是将6C写在前面,还是将49写在前面?如果将6C写在前面,就是big endian。如果将49写在前面,就是little endian。 “endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,一个皇帝送了命,另一个丢了王位。 我们一般将endian翻译成“字节序”,将big endian和little endian称作“大尾”和“小尾”。 1、字符编码、内码,顺带介绍汉字编码 字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。 GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。 GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。 从ASCII、GB2312到GBK,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK都属于双字节字符集 (DBCS)。 2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。从汉字字汇上说,GB18030在GB13000.1的20902个汉字的基础上增加了CJK扩展A的6582个汉字(Unicode码0x3400-0x4db5),一共收录了27484个汉字。 CJK就是中日韩的意思。Unicode为了节省码位,将中日韩三国语言中的文字统一编码。GB13000.1就是ISO/IEC 10646-1的中文版,相当于Unicode 1.1。 GB18030的编码采用单字节、双字节和4字节方案。其中单字节、双字节和GBK是完全兼容的。4字节编码的码位就是收录了CJK扩展A的6582个汉字。例如:UCS的0x3400在GB18030中的编码应该是8139EF30,UCS的0x3401在GB18030中的编码应该是8139EF31。 微软提供了GB18030的升级包,但这个升级包只是提供了一
摘要:LCD是嵌入式常见设备,如何在LCD上显示汉字和英文?矢量字体和点阵字体有何不同?同一个字符为何有多种编码?GB2312、GB18030指什么?他们之间有关系吗?嵌入式设备如何支持多国语言?从哪里获取字库?需要付费吗?以上问题,本文一一道来!
JSP中文乱码的产生原因及解决方案在JSP的开发过程中,经常出现中文乱码的问题,可能一直困扰着大家,现在把JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。首先需要了解一下Java中文问题的由来: Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文
早期美国计算机显示字符采用数字映射字母的方式,感觉挺好用,在60年代就做出了ASCII编码,从0-127共128个字符(包含不可见字符)。
!!!Java要转换字符编码:就一个String.getBytes("charsetName")解决,返回的字节数组已经是新编码的了~~至于后边是new String组装还是网络发送,就再处理了。 1 try { 2 String test = "一"; 3 System.out.println(System.getProperty("file.encoding"));// java默认编码是UTF-8 4 System
试想你请求一个数据,却得到一堆乱码,丈二和尚摸不着头脑。有同事质疑你的数据是乱码,虽然你很确定传了 UTF-8 ,却也无法自证清白,更别说帮同事 debug 了。
有没有遇到过这样的问题,读取文件被提示“UnicodeDecodeError”、爬取网页得到一堆乱码,其实这些都是编码惹的祸,如果不能真正理解编码的问题所在,就像开车没有带导航,游泳没有带有度数的眼镜。如果你正在为此而 头疼,不妨来看看这篇文章,里面或许有你要的答案。
(1) 掌握汉字机内码、区位码,最终利用相关工具批量获取一段文字的 GB2312 机内码,并利用简单电路实现 GB2312 编码与区位码的转换;
字符是各种文字和符号的集合,包括了各个国家的文字,标点符号,表情,数字等。 字符集就是一系列字符的集合。字符集的种类比较多,每个字符集可以表示的字符范围通常不同,就比如说有些字符集是无法表示汉字的。
这个错误通常表示在尝试将字节解码为Unicode字符时出现了问题。在本文中,我们将详细讲解这个错误信息的原因,并提供一些解决方案。
编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多。本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Java 中经常遇到的几种编码格式的区别;Java 中经常需要编码的场景;出现中文问题的原因分析;在开发 Java web 程序时可能会存在编码的几个地方,一个 HTTP 请求怎么控制编码格式?如何避免出现中文问题?
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第52章 STM32H7的LTDC应用之点阵字体和字符编码
编解码总结 一. 编解码 Charset类 编解码 编码:字符—>字节 解码:字节—>字符 每个文件存储在磁盘上,都会指定一种编码格式。 常用编码方式 ascii:使用7bit表示一个字符,共计可以表示128个字符。 iso-8859-1:使用8bit(1个byte)表示一个字符,共计可以表示256个字符。ISO-8859-1向下完全兼容ASCII,是在ASCII基础上的一个扩展,即ISO-8859-1的第0~127个字符与ASCII完全相同。ISO-8859-1充分利用了一个字节,不会出现位的丢失。
本基于协同过滤的电影票务销售系统,系统主要采用java,spring,springmvc,mybatis,mysql数据库,JSP页面开发技术,系统前端界面主要采用echarts,vue,html,css,javascript等技术实现,主要通过JavaWeb技术实现针对互联网电影在线购票业务实现整合,搭建线上可用的电影票务销售系统。
Unicode 也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。对于世界上所有的语言文字在 unicode 中都可以查看到。
如果你不知道用什么字符集,用 UTF-8,如果没有强制要求,也用 UTF-8,相信我,没错的。
真空管时代的计算机尽管已经步入了现代计算机的范畴,但其体积之大、能耗之高、故障之多、价格之贵大大制约了它的普及应用。直到1947年,由Bell实验室的William B. Shockley、 John Bardeen和Walter H. Brattain.发明了晶体管,开辟了电子时代新纪元,电子计算机也找到了腾飞的起点,一发而不可收……
也是出于这样的考虑中国国家标准总局于1981年制定并实施了 GB 2312-80 编码,即中华人民共和国国家标准简体中文字符集。后来厂商微软利用GB2312-80未使用的编码空间,收录GB 13000.1-93全部字符制定了GBK编码。
领取专属 10元无门槛券
手把手带您无忧上云