展开

关键词

GB2312

Unicode、Ascall、GB2312、UTF-8等字符编码之间的关系,廖老师是这样说的: 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。 但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。 遇到的一个比较不爽的问题就是python2对中文的输出处理,当时用的编辑器是ulipad和pycharm,糊里糊涂用的版本是4.x的,还有很多地方没完善,对中文的处理还有很多问题,经常在Unicode和GB2312

78090

一图弄懂ASCII、GB2312、GBK、GB18030编码

兼容性关系是GB18030兼容GBK,GBK兼容GB2312GB2312兼容ASCII。所谓兼容,你可以简单理解为子集、不冲突的关系。 例如GB2312编码的文件中可以出现ASCII字符,GBK编码的文件中可以出现GB2312和ASCII字符,GB18030编码的文件可以出现GBK、GB2312、ASCII字符。 在GB2312中收录了6763个汉字以及682个特殊符号,已经囊括了生活中最常用的所有汉字。 【3】GBK 由于GB2312只有6763个汉字,我汉语博大精深,只有6763个字怎么够? 于是GBK中在保证不和GB2312、ASCII冲突(即兼容GB2312和ASCII)的前提下,也用每个字占据2bytes的方式又编码了许多汉字。 实际生活中,我们用到的99%以上的汉字,其实都在GB2312那一块区域内。至于GB2312每个编码对应的到底是哪个汉字本文不再赘述,可以参考链接(链接地址)查询。

32K153
  • 广告
    关闭

    腾讯云618采购季来袭!

    腾讯云618采购季:2核2G云服务器爆品秒杀低至18元!云产品首单0.8折起,企业用户购买域名1元起,还可一键领取6188元代金券,购后抽奖,iPhone、iPad等你拿!

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

    unicode、utf-8、ansi、gbk、gb2312编码详解

    unicode、utf-8、ansi、gbk、gb2312编码详解 前言 作为一个开发人员或是测试人员,免不了要与各种各样的编码打交道,而且这些各种编码总是让人头大,现在我们就来揭开他们的庐山真面目 移动还是联通 中国人民看到这样很不错,于是就把这种汉字方案叫做 "GB2312"。GB2312 是对 ASCII 的中文扩 展。 但是,你以为这样就够用了吗? 当然不行,gb2312能够表示很多简体汉字,但是繁体怎么办呢?台湾群众很不满啊,于是也自己搞了一套编码,于是big-5诞生了,你以为这样就完了? gb2312仅仅可以表示6000多个常用汉字你让其它不常用的怎么办? 于是扩展呗,把之前gb2312中没有利用的位好好利用起来,就成了gbk,这又增加了20000多个汉字,但是咱们少数名族也要用电脑啊,于是有了后来的 GB18030 GB2312和GBK都是用两个字节来编码的

    90662

    GB2312转换成UTF-8与utf_8转换成GB2312

    ///

            /// utf_8转换成GB2312         ///         /// <param name="utfInfo"></param = Encoding.GetEncoding("gb2312");             byte[] unicodeBytes = utf8.GetBytes(utfInfo);             byte[] asciiBytes = Encoding.Convert(utf8, gb2312, unicodeBytes);             char[] asciiChars = new new string(asciiChars);             return gb2312info;         }         ///         /// GB2312 byte[] unicodeBytes = gb2312.GetBytes(gbInfo);             byte[] asciiBytes = Encoding.Convert(gb2312

    1.9K10

    我知道你不知道GB2312

    另一类是ANSI类,最常见的是GB2312/GBK/GB18030三种,他们能很好支持中文,但是面对其它语言可能出现乱码。 现在让我们回到最初提到的那个“仿宋GB2312”的问题,答案一目了然了。首先要明确的是,的确有两种仿宋字体,一种叫做“仿宋GB2312”,另一种叫做“仿宋”。 其中“仿宋GB2312”顾名思义,遵循的是GB2312标准,发布时间早,收录的字数也少;而“仿宋”遵循的是微软自己的GBK标准,发布时间晚、收录字数多,是Windows以及Office的默认字体。 也就是说,如果你想安装“老古董”“仿宋GB2312”,你还得另外去下载,然鹅—— “ 仿宋GB2312竟然TM是很多政府的公文专用字体!!! 有没有发现“仿宋GB2312”要比“仿宋GBK”的字体粗一些?

    62430

    GB2312 ? UTF-8 ?

    当然了,最常用的编码也就是GB2312 和 UTF-8 了。 ● UTF-8和GB2312有什么区别?   ● 我们在国内做网站是用UTF-8编码格式还是GB2312编码格式好?    一. 于是就把这种汉字方案叫做 “GB2312”。GB2312 是对 ASCII 的中文扩展。 于是我们不得不继续把 GB2312 没有用到的码位找出来老实不客气地用上。    GB2312属于中文编码,主要针对国内用户使用,如果国外用户访问GB2312编码的网站就会变乱码。   一般觉得是用UTF-8比GB2312要多很多,大家都比较赞同用UTF-8。

    3.4K20

    织梦DEDECMS模板编码格式从UTF-8换成GB2312

    我们很多朋友在利用DEDECMS织梦程序建站的时候,由于程序本身是有多个编码版本的,比如有UTF-8和GB2312的,我们的主程序安装好之后但是在选择主题模板的时候也是有编码区别的,这个就比较难搞。 content="text/html; charset=utf-8" http-equiv=Content-Type> 然后换成: <META content="text/html; charset=<em>gb2312</em> " http-equiv=Content-Type> 然后我们用记事本或者是编辑器打开主题,然后另存为一个GB2312的编码格式。 同时,如果我们是GB2312换成UTF-8也是一样的道理。 本文出处:老蒋部落 » 织梦DEDECMS模板编码格式从UTF-8换成GB2312 | 欢迎分享

    9930

    实例探究字符编码:unicode,utf-8,default,gb2312 的区别

    最近做邮件收发,不同的邮件系统间可能会出现编码问题,迫使我重新回来研究一下字符的编码问题,unicode,utf-8,gb2312这些编码格式都是我们熟知的,default 编码格式是哪一种呢? ").getbytes(str);             printbyte("gb2312:", buffergb2312);     下面是输出结果: utf8:   string length 再仔细看看utf-8对于"china,"这6个字符的编码: 67 104 105 110 97 44  gb2312 和 default 编码结果也是这样; 而unicode的编码是: 67 0 104 所以,utf-8,gb2312等编码都是“变长编码”的,但是对于中文的编码处理上,gb2312所需的字节更少。 而default 编码,则取决于当前系统编码,比如我们的操作系统安装的时候默认选择的都是“简体中文”(gb2312),所以测试中也证实了当前的环境编码格式 gb2312=default     因此,我们在使用国外开源的代码的时候

    622100

    golang处理gb2312转utf-8编码的问题

    问题描述: 如果你有把曾经的php或者java的老代码用go重写的经验,很可能会遇到gb2312转utf-8的问题 最近有同学在工作有使用到iconv-go这个库,涉及到转换字符的,出现如下报错,然后再咨询我

    21410

    spring cloud 学习(11) - 用fastson替换jackson及用gb2312码输出

    前几天遇到一个需求,因为要兼容旧项目的编码格式,需要spring-cloud的rest接口,输出gb2312编码,本以为是一个很容易的事情,比如下面这样: @RequestMapping(method = RequestMethod.POST, value = "syncPaymentList", consumes = {"application/json; charset=gb2312 "}, produces = {"application/json; charset=gb2312"}) public GatewayDataResult<DcbOrderListResponse } 另外网有一些办法,比如修改application.yml spring: http: encoding: enabled: true charset: GB2312 filter-class> <init-param> <param-name>encoding</param-name> <param-value>gb2312

    70510

    Java编码ASCII、GB2312、GBK、Unicode、UTF-8、UTF-16 编码方式详解

    2 GB2312 GB2312是1981年开始实施的一套汉字处理的编码方案,GB是“国标”的意思,GB2312是对ASCII进行了扩展,在原来ASCII的基础上扩充了6000多个汉字和600多个其他字符 结构 GB2312用一个字节表示一个英文字符和一些基本符号和半角符号,用两个字节表示一个汉字和全角符号和一些我们日常使用的符号。 GB2312利用了ASCII的127个字符之后空余的部分,增添了6000多种常用汉字。 数值小于127的字节表示ASCII中原有字符,两个连续数值都大于127的字节表示一个汉字字符。 使用GB2312编码,当读取到一个数值上小于127的字节时当作一个ASCII中原有的字符处理。 3 GBK GB2312有局限性,只能表示6000个字符,GBK是对GB2312的升级,GBK与GB2312非常相似,唯一的不同: 结构 使用GBK编码,当读取到一个数值上小于127的字节时当作一个ASCII

    51210

    asp.net 解码gb2312下urlencode后的字符串

    公司网站前期的网页用了gb2312保存用户数据,而我负责的部分用的是utf8,今天恰好要获取前期录入的数据于是毫无悬念地出现乱码问题,经过一番网上的搜索还是找不到完整解决方法,折腾好一段时间终于通过下面的例子推出了问题的所在 : 这样的一个业务,客服用gb2312编码后 提交服务器,服务器接收时出现乱码,用System.Web.HttpUtility.UrlDecode();解码 ,还是出现乱码,困老了我好长时间,终于在google 解决方案: HttpUtility.ParseQueryString(Request.Url.Query, System.Text.Encoding.GetEncoding("GB2312"))["message 于是了解到UrlEncode是基于页面的编码方式,那么前期保存到的数据时基于gb2312来UrlEncode的,所以在utf8页面解码时要指定用gb2312的方式来解码。 具体做法: System.Web.HttpUtility.UrlDecode("需解码的GB2312编码字符串",Encoding.GetEncoding("gb2312"));

    43350

    转载:从程序员的角度看ASCII, GB2312, UNICODE, UTF-8

    原有的英文软件可以很好的运行,C的库函数也不用做修改, 比如 strlen("ABC") 在GB2312表示的内码中, 由于GB2312对英文字符的编码是和ASCII完全一样的,所以返回 3 有了GB2312之后,汉字显示/存储/交换就基本上没什么问题了. 几乎所有的非英语国家都制定了和GB2312类似兼容ASCII的内码字符对应表. 而从GB2312编码转换到UNICODE编码需要查表. UTF8 和 UNICODE 的关系 与 GB2312 和 UNICODE的关系有本质的不同. 所以,要实现UTF8编码到GB2312编码的转换必须先把 UTF8编码还原为UNICODE编码,再通过查表的方式,把UNICODE编码转化为GB2312编码. 为了向前兼容,前端使用的还是GB2312内码(中文环境).

    54830

    GB2312、GBK、GB18030 这几种字符集的主要区别是什么?

    1 GB2312-80 GB 2312 或 GB 2312-80 是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,又称 GB 0,...

    97931

    解决python错误 UnicodeDecodeError: gb2312 codec cant decode byte 0x8b in position 1: illegal multibyt

    kaijiang.500.com/shtml/ssq/19001.shtml' page =urllib.request.urlopen(url) content = page.read().decode('gb2312 这样的话网页数据未压缩,会相对比较大,增加网络传输时间 另一种方式就是对请求后的数据解压,显然这个方式处理会更快,如下 content = gzip.decompress(page.read()).decode('gb2312 ') 可是修改之后发现运行还是报错,这时候发现应该是因为网页中含有编码集之外的字符(网页内容指定charset是gb2312),就算加到更大范围还是报错(PS:汉字字符集范围 gb2312 < gbk < gb18030) 这时候选择忽略这些无法解码的字符 content = gzip.decompress(page.read()).decode('gb2312','ignore') 再运行代码,发现这个问题已经解决了

    2.2K40

    【第3版emWin教程】第31章 emWin6.x的全字库的实现(GB2312编码,SPI Flash方案)

    mod=viewthread&tid=98429 第31章 emWin6.x的全字库的实现(GB2312编码,SPI Flash方案) 本章节为大家讲解GB2312编码全字库的实现,对于习惯了 GB2312编码的用户来说,使用本章节的方法非常合适。 31.1 初学者重要提示 31.2 下载算法存放位置(操作前必看) 31.3 GB2312编码全字库说明 31.4 GB2312全字库的移植方法 31.5 移植文件简易说明 31.6 GB2312字库使用方法 GB2312编码区范围是A1A1到F7FE,一共F7-A1+1 = 87个区,每区有FE-A1+1=94个字符,因此GB2312可以表示87*94=8178个字符。 这里的编码就是GB2312的编码范围。

    11710

    JSP中文乱码的产生原因及解决方案

    完整解决代码如下: <%@ page language="java" pageEncoding="<em>gb2312</em>"%> <%@ page contentType="text/html;charset= <em>gb2312</em> 原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF- 8和<em>GB2312</em>编码方式表示字符时不一样,这样就出现了不能识别字符。 B、通过request.seCharacterEncoding ("gb2312")对请求进行统一编码,就实现了中文的正常显示。 C、为了避免每页都要写request.setCharacterEncoding("gb2312"),可以使用过滤器对所有jsp 进行编码处理。 ("gb2312"); 四、关于jsp在MyEclipse中打开的乱码问题 对于一个已经存在的项目,Jsp文件的存储格式可能是utf-8。

    1.7K60

    python中文decode和encod

    decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。     encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。     然后我这样写代码    s="你好"    s=s.decode('gb2312').encode('utf-8')    print s    报错:    UnicodeDecodeError : 'gb2312' codec can't decode bytes in position 2-3: illegal multibyte sequence    原因:因为我的文件为UTF-8编码的 所以你想用gb2312将其转成unicode是不可能的。

    58530

    python字符转码的理解

    encode:字符编码 decode:字符解码 有些文档可能采用的是某种编码方式(如utf-8)来存储文本,但如果我们展现的工具是另外一种编码方式(如gb2312),若我们不做些转码的工作,我相信你在此工具中显示的将会是乱码 因为,我们的文本采用utf-8方式来存储的,那么它存储在硬盘或者内存的字节是以utf-8规定来存储的,而gb2312是另外一种存储规定,所以使用gb2312的工具无法正确读取,此时需要我们将utf-8存储转变为 gb2312存储,故我们需要先用decode('utf-8')来解码,再将encode('gb2312')来编码,这样,我们的工具便可以正确显示内容了. /usr/bin/env python #coding=utf8 print "中国".decode('utf-8').encode('gb2312') 首先,“中国”这个字符串是以utf-8存储的 ,我们要在crt上打印出来,此时的crt是以gb2312编码的,那么我们需要将"中国"这个存储编码方式更改为crt软件编码一样的,方可以在crt正确显示。

    21910

    java 字符串编码转换 字符集编码的见解 心得 体会(跟之前那个C++编码随笔对应)

    ")); 6   System.out.println(new String(test.getBytes("GB2312"),"GB2312"));//用什么拆就用什么组装,否则显示乱码 GBK,GB2312都两字节编码。 用GB2312来解释这个新字节数组就对了 b = new String(a.getBytes("GB2312"),"UTF8"); System.out.println( //后边硬用GB2312来解释这N个字节,肯定乱码。 UTF8三字节,GB2312双字节 b = new String(a.getBytes("UTF8"),"GB2312"); //同上一句其实一样 System.out.println

    1.2K30

    扫码关注云+社区

    领取腾讯云代金券