凡是在应用中涉及到中文了,都会遇到字符编码问题。之前没有仔细研究,脑中只有一个比较敷衍的概念——在交互中统一字符编码就不会出问题了~具体字符编码会出什么问题,一直没好好研究下。(今早看到华莽邮件里又有人为了字符编码抓狂了,同情下……)
首先要清楚一下几个概念:
字节(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成相应的字符编码。
分享到:
相关推荐
中英文字符编码查询 软件介绍: 该软件能快速查询中英文字符的ASCII、区位码、GB2312 码、Big5 码、GBK 内码、Unicode 码、UTF-8 码和 UTF-16 码。体积小、效率高、使用方便、批量转换、即输即得和多进制显示等。...
字符编码和字符集是计算机处理文字和符号的基础。字符集是指一组特定的字符集合,它包含文字、符号、数字等元素。例如,英文字符集包含了所有的英文字母和符号,而汉字字符集则包含了所有汉字。字符集可以是某个语言...
根据给定文件的信息,我们可以总结出以下关于“判断字符编码格式代码”的相关知识点: ### 一、背景介绍 在计算机科学领域,字符编码是将文本转换为数字表示的方法,以便于计算机存储和处理。常见的字符编码包括...
韩文字符编码总表
### 关于字符编码的转换知识 #### 一、引言 字符编码是在计算机科学领域内一个重要的基础概念,它涉及到如何在计算机系统中存储、处理和传输文本信息。随着信息技术的发展,不同地区和文化背景下的用户对字符的...
在IT领域,字符编码是计算机处理文本数据的基础。字符编码定义了如何将字符与数字(通常是整数)关联,使得计算机能够存储、处理和传输文本信息。本工具“中英文字符编码查询工具”专注于帮助用户快速查询中文和英文...
《字符编码查询之星》是一款专为处理字符编码问题设计的实用工具,主要功能在于实现Unicode、UTF-8、GBK和BIG5编码之间的相互转换。在信息化时代,字符编码的兼容性和准确性是数据交换的重要环节,这款软件的出现,...
字符编码是计算机科学领域中一个基础且重要的概念,它涉及到信息的存储、传输和处理。字符编码定义了如何将文字、符号等字符转换成二进制形式,以便计算机理解和处理。本文将深入探讨字符与编码的概念、发展历史、...
### 字符编码基础知识 #### 一、概述 字符编码是计算机科学中的一项基本技术,用于将文字信息转换成数字形式以便计算机处理。随着信息技术的发展,全球化的趋势要求计算机能够处理不同语言的文字信息,这就需要一...
字符编码是计算机处理文本的关键部分,它决定了如何将人类可读的字符转化为二进制数据进行存储和传输。在IT领域,尤其是编程和文件处理中,理解不同的字符编码至关重要,因为错误的编码设置可能导致乱码问题。本篇将...
### Java 字符编码详解 #### 一、Java 字符编码基础概念 在深入探讨 Java 字符编码的问题之前,我们先来了解一下字符编码的基本概念。字符编码是计算机内部表示字符的一种方式,它涉及到如何将人类可读的文字转换...
字符集与字符编码是计算机处理文字的基础,它们决定了如何用二进制表示各种语言的字符。在信息技术领域,理解和掌握字符集与字符编码至关重要,因为它们直接影响到数据的存储、传输和显示。以下是对这些概念的详细...
- 虽然大部分现代浏览器会自动修正未编码的特殊字符,但为了代码的健壮性和标准化,建议始终使用字符编码。 - 不要在JavaScript字符串中直接使用特殊字符编码,应使用其对应的Unicode转义序列,如`\u00A9`表示版权...
字符编码是计算机处理文本的基础,不同的编码方式使得各种语言的文字得以正确显示。在这个主题中,我们将深入探讨“字符编码转换”这一重要概念,以及如何支持包括GBK、UNICODE(UTF-16)、UTF-8以及GB18030等在内的...
在Web开发中,字符编码是确保数据正确传输和显示的关键因素。HTTP作为Web通信的基础协议,其请求中的字符编码问题尤为重要。本文将深入探讨HTTP请求中字符编码的处理方法,包括字符编码的基本概念、常见问题、HTTP...
HTML特殊字符编码是网页设计与开发中不可或缺的一部分,它们用于在HTML文档中插入无法直接键入的字符,或者为了确保跨浏览器兼容性而使用的字符实体。以下是对标题、描述及部分给定内容中的知识点进行的详细解读: ...
Java网络传输中的字符编码问题主要涉及到Java编程语言在处理不同编码格式时的转换和兼容性。Java语言本身采用Unicode字符集,这是一种国际化的标准,能够支持世界上大多数语言,包括中文。然而,在实际的网络环境中...