凡是在应用中涉及到中文了,都会遇到字符编码问题。之前没有仔细研究,脑中只有一个比较敷衍的概念——在交互中统一字符编码就不会出问题了~具体字符编码会出什么问题,一直没好好研究下。(今早看到华莽邮件里又有人为了字符编码抓狂了,同情下……)
首先要清楚一下几个概念:
字节(byte):计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间。
字符(Character):是文字与符号的总称,包括文字、图形符号、数学符号等。
字符集(Charset):即字符的集合,规定了在这些集合里面有哪些字符。
字符编码(Encoding):就是规定用一个字节还是多个字节来存储一个字符,用固定的二进制码值表示某个字符。
目前常见的字符集有ASCII、ISO-8859-1、Unicode、GB2312、GBK、BIG5等。各自都有各自的编码方式,比如“中华”这个词在GBK中编码为:“\xd6\xd0\xbb\xaa”,在Unicode中为:“\u4e2d\u534e”。当然各自的特性也不同,这里就不介绍了。
在所有这些字符集中,Unicode比较特殊,因为它的野心比较大,想囊括所有语言的字符作为统一字符集,所以编码就不能只用小小一个字节了,所有它能表示的字符都编码为两个字节。但是英语系的家伙们不干了,他们的语言仅仅26个字母,也要用2个字节来编码,传输时岂不是浪费大了!于是想出了UTF-8、UTF-16等针对Unicode的二次编码方式。UTF-8对传统ASCII字符用一个字节来编码,对中文这样的字符用3个字节来编码(我们亏了~)。
出现乱码问题主要在数据的表现上,也就是显示设备在根据数据中的字符编码值找出相应的字符并加以显示时,使用了错误的编码方式。这个问题只要在通信中交互数据时标记清楚数据所使用的编码方式。在xml中,可以设置:
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
在HTTP传输中可以在报头设置字符集编码方式,HTML也可以标记字符编码,这样浏览器就会自动选择了……
字符编码不仅仅会引起乱码麻烦,在数据处理中也会惹麻烦。例如Python在“对外”(包括标准输出流)发送Unicode编码的文本数据时,会默认的使用ASCII字符集的codecs将字符转换成ASCII编码,如果含有非ASCII字符集的字符,就会报“UnicodeEncodeError”;在比较Python中的字符串时,如果使用的编码不同,也会报UnicodeEncodeError异常………所以比较乖的方式就像《Python Cookbook》中建议的,在发生IO动作时,I时将数据decode成Unicode,O时再将数据encode成相应的字符编码。
分享到:
相关推荐
字符集和字符编码 字符集是指计算机系统支持的所有抽象字符的集合,包括文字、符号、图形符号、数字等。字符编码是将字符转换为二进制数据的过程,反之,解码是将存储在计算机中的二进制数据解析显示出来。 1. ...
韩文字符编码总表
字符集和字符编码是计算机处理文字的基础,它们决定了如何在二进制的世界中表示和传输人类语言。本文将深入探讨这两个概念,以及相关的知识点。 首先,我们要理解什么是字符集。字符集,顾名思义,就是一个集合,...
本文将基于“工具-字符编码转换”的主题,深入探讨字符编码的概念、常见编码格式、字符编码转换工具以及如何进行实际操作。 字符编码是计算机表示和处理文字的一种方式,它将各种字符与二进制数字对应起来。常见的...
### 关于字符编码的转换知识 #### 一、引言 字符编码是在计算机科学领域内一个重要的基础概念,它涉及到如何在计算机系统中存储、处理和传输文本信息。随着信息技术的发展,不同地区和文化背景下的用户对字符的...
字符编码是计算机处理文本的基础,它定义了字符与二进制数字之间的对应关系。本文将深入探讨ASCII、Unicode以及UTF-8三种字符编码系统,帮助理解它们的关系和各自的特点。 首先,ASCII(American Standard Code for...
在IT领域,字符编码是计算机处理文本数据的基础。字符编码定义了如何将字符与数字(通常是整数)关联,使得计算机能够存储、处理和传输文本信息。本工具“中英文字符编码查询工具”专注于帮助用户快速查询中文和英文...
字符编码是计算机科学中的一个重要概念,它涉及到如何在数字系统中表示和处理文本。在我们的日常生活中,无论是浏览网页、编辑文档还是发送电子邮件,字符编码都在背后默默地工作,确保我们看到的文字能正确显示。...
字符编码查看器是一款非常实用优秀的编程软件。这款软件支持编码之间的相互转换,可以帮助用户快速查看编码等。功能非常强大。需要的朋友可以前来本站下载。 软件介绍 字符编码查看器是一款可以帮助你轻松快速的...
VC++编程实现转换文本文件的字符编码 本文介绍了使用VC++编程实现转换文本文件字符编码的方法,使用该方法,可使文本文件的字符编码在 Unicode、Big5、UTF8、GBK 等编码之间实现自由转换。另外,本文还介绍了一些...
字符编码是计算机科学领域中一个基础且重要的概念,它涉及到信息的存储、传输和处理。字符编码定义了如何将文字、符号等字符转换成二进制形式,以便计算机理解和处理。本文将深入探讨字符与编码的概念、发展历史、...
字符编码是计算机处理文本的基础,不同的编码方式决定了如何表示和解析文字。在信息化时代,理解和掌握字符编码至关重要,尤其对于编程、数据交换以及国际化的文本处理。"完整版字符编码查看器"是一款实用工具,它...
### 字符编码基础知识 #### 一、概述 字符编码是计算机科学中的一项基本技术,用于将文字信息转换成数字形式以便计算机处理。随着信息技术的发展,全球化的趋势要求计算机能够处理不同语言的文字信息,这就需要一...
字符编码与解码是计算机科学中的重要概念,尤其在处理文本数据时不可或缺。字符编码是将字符转换为二进制数的过程,以便计算机能够存储、处理和传输这些字符。解码则是相反的过程,即将二进制数转换回可读的字符形式...
### Java 字符编码详解 #### 一、Java 字符编码基础概念 在深入探讨 Java 字符编码的问题之前,我们先来了解一下字符编码的基本概念。字符编码是计算机内部表示字符的一种方式,它涉及到如何将人类可读的文字转换...
字符集与字符编码是计算机处理文字的基础,它们决定了如何用二进制表示各种语言的字符。在信息技术领域,理解和掌握字符集与字符编码至关重要,因为它们直接影响到数据的存储、传输和显示。以下是对这些概念的详细...
- 虽然大部分现代浏览器会自动修正未编码的特殊字符,但为了代码的健壮性和标准化,建议始终使用字符编码。 - 不要在JavaScript字符串中直接使用特殊字符编码,应使用其对应的Unicode转义序列,如`\u00A9`表示版权...
字符集编码是计算机科学中的一个重要概念,涉及到数据的存储、传输和显示。在这个"字符集编码查询/反查工具"中,我们可以看到涉及到的关键技术包括字符集、二进制、十六进制、Base64以及URL编码。这些知识点在信息...
字符编码是计算机处理文本的基础,不同的编码方式使得各种语言的文字得以正确显示。在这个主题中,我们将深入探讨“字符编码转换”这一重要概念,以及如何支持包括GBK、UNICODE(UTF-16)、UTF-8以及GB18030等在内的...
在Web开发中,字符编码是确保数据正确传输和显示的关键因素。HTTP作为Web通信的基础协议,其请求中的字符编码问题尤为重要。本文将深入探讨HTTP请求中字符编码的处理方法,包括字符编码的基本概念、常见问题、HTTP...