什么是字符?18 2025年7月 | 阅读 16 分钟 字符是单个的视觉对象,也称为 char,用于表示数字、符号或文本。例如,N 是一个字母,也是一个单独的字符,如下所示。在计算机中,一个字符等于一个字节,即 8 位。 ![]() 字符也用于描述 电脑 玩家;在电脑游戏中,它扮演着虚构玩家的重要角色。例如,在玩游戏时,你被视为一个角色或 PC。如果一个角色不受其他人控制,并且你遇到了该角色,则称之为非玩家角色 (NPC)。在《魔兽世界》游戏中,下图就是一个游戏角色的例子。 ![]() 在信息技术中,字符是一个可打印的符号,具有象形或语音含义。通常,它是单词或文本的一部分,用于表达语法标点符号或数字。如今,在信息技术中,一个字符通常是有限数量的符号之一,包括十进制数字系统中的数字、特定语言字母表中的字母,以及一些特殊符号,如“@”和“&”。对于字符,已经开发了许多计算机编码标准。ASCII 在个人电脑中最常用,而 IBM 大型机系统使用 EBCDIC。此外,Unicode(新标准)得到较新 Windows 系统的支持。 有时,图形和字符之间会存在区别。在做出这种区分时,就声音和含义而言,字符可以与其他字符区分开来。字形是用于描述字符的图形图像。在不同的实现中,一个字符可以有多个可能的字形,一个字形可以代表多个可能的字符。 在计算机科学中,字符是信息的一个显示单元,相当于一个字母符号或字母。在计算机科学中,字符不等于机器语言中的一位,而是通过编译的机器语言来描述各个字符。对于字符,已经开发了一个名为ASCII 的通用系统。 此外,如果某些语言没有 char 作为数据类型,它们可能会使用缩写来表示用于字符串值的某些方法。例如,JavaScript 有 charCodeAt() 和 charAt() 方法,它们返回与调用字符串相关的值。例如,charAt() 方法返回一个包含字符的字符串。当运行下面的代码时,它将弹出字符串“javatpoint”中位置 2 的字符的值(从 0 开始而不是 1)。 上面的代码将弹出一个警告,值为“o”,因为“T”的位置是 0,“p”的位置是 1,而“o”的位置是 2。 字符字符串字符字符串是一系列字符,通常通过将字符括在单引号(' ')或双引号(" ")中来指定。例如,California 是一个名字,但如果你写成单引号或双引号,如 California 和“ California ”,则它们将是字符字符串。它由代码位表示,并组织成一个单一变量。这个保存字符的字符串变量被定义为具有特定长度,或者其长度可以由程序识别。在字符字符串中,名称代表其他对象,因为它不代表任何东西,并且与名称不同。 在许多类型的计算机 程序 中,字符字符串都通过特定语法进行标记,这些字符串通过几个编程命令进行设置或声明,并且通常包含引号。然后,它们用于容纳描述 ASCII 字符的各种数据。通过存储与字符对应的特定值,在许多情况下,单个字节代表一个字符。UTF 协议或 Unicode 或八位字节协议可以由不同的编码约定用于将字节标识为操作单元。 在计算机程序中,一个字符可以扮演多种角色。例如,在程序的加载函数中,程序员可以使用一个命令创建一个未填充的字符字符串。用户事件可以将数据输入到未填充的字符字符串中。当用户键入一个单词或任何字符串(例如“你好吗”)时,程序以后可以读取该字符字符串并在屏幕上显示它,打印它,为其保留存储空间,等等。此外,字符字符串通常包含在数据存储和数据捕获函数中,这些函数接收姓名或其他类型的信息。 可变字符字段 (Varchar)varchar(可变字符字段)是一种数据类型,用于在编程或数据库语言中存储值。它可以包含任何类型的数据,如字符、数字、标点符号或空格。根据数据库的不同,该数据类型最多可以存储其最大大小的值。主要的可变字符字段用于字符串操作并充当临时变量。varchar 字段通常使用当前长度初始化为零,并具有声明的最大长度。其当前长度可以从零到声明的最大字段长度。根据使用的编程语言,声明可变字符字段的方法不同。 可变字符字段最大的优点是避免了填充。对于字符字段,无论字符串的实际大小如何,该字段都占用确切的字符数,并且字段长度和固定长度之间的差值用空格填充。在可变字符字段中,由于它使用字符串大小所需的空间,因此只需要最小的存储空间,而字符字段则不需要。它还有助于对值进行排序和搜索,因为它包含一个避免任何浪费的功能。 此外,在某些数据库和编程语言中,如果发现任何额外的空间,它会在存储到数据库之前自动删除。可变字符字段可能受到数据库或编程语言的限制,不能用作候选键或主键,也不能与 SELECT 语句一起使用。可变字符字段支持大多数 关系数据库管理系统。 字符编码和标准文本,就像现代世界的其他事物一样,在经过计算机和互联网时会经历特定的转换。编码,在这种情况下通常是字符编码,是将字母、数字和符号转换为可以被内存芯片和网络线路轻松传输的格式的过程。 ASCII(美国信息交换标准代码)美国信息交换标准代码,被称为文本代码的守护者。每个 ASCII 字符被压缩到 7 位捆绑中,允许从 0 到 127 识别 128 个符号。这些插槽可以分解为 ![]()
由于其简单性,ASCII 还支持 HTTP 和 SMTP 等旧协议,而大多数现代代码出于怀旧原因仍然会小心使用。 扩展 ASCII 和代码页当世界其他地区的人们寻求包容时,引入了扩展 ASCII。它分配了 256 个空间,通过使用完整的 8 位来提供额外的字母、符号和重音符号。问题是,没有一个图表能满足所有人的需求,因此出现了几十种称为代码页的区域改编。一些重量级产品包括: ![]()
然而,混合使用不同的代码页仍然会产生问题。当在一个页面上保存的文本使用另一个页面打开时,你会看到乱码——混乱的无意义符号,没有人能读懂。 UnicodeUnicode 的设计目的是解决这个问题,即为每个字母、表情符号和标点符号分配一个单独的、永久的数字。该数字称为代码点,介于 U+0000 和 U+10FFFF 之间。Unicode 有几种打包选项
![]() Unicode 提供了一个基本多语言平面,其中包含日常字母,以及用于较少见的脚本和符号的补充平面。它还允许组合序列,其中几个代码点组合在一起看起来像一个字符,例如 á。 计算中的字符在计算机中,字符永远不仅仅是一个漂亮的字形;它是一个位于内存中的微小字节包。了解这些字节的存储方式可以让你在不丢失宝贵数据或出现奇怪错误的情况下处理文件名、用户输入和数据库。 内存和存储中的字符计算机上的每个字符都占用一定量的内存,该量取决于字符的编码方式。
![]() 编程语言中的字符串只是这些字符的列表,每种语言都有自己的内存存储方式。例如,C 使用空终止方法,将字符一个接一个地堆叠,并在末尾放置一个特殊零值,以便代码知道字符串在哪里停止。因此,任何时候函数需要字符串的长度,它都必须一直读取直到遇到零标记。 像 Java、Python 和 JavaScript 这样的较新语言通过更高级的类型隐藏了这一细节,为程序员提供了更改、切片或复制文本的工具,而无需自己计算字节。 在编程中操作字符无论使用哪种语言,对字符进行小幅更改通常涉及一套相同的任务。
字符串和字符序列在几乎所有编程语言中,字符串都是最基本的数据类型之一。字符串可以定义为一组排列并可以按顺序访问的字符。字符串中的每个字符都有一个特定的位置(从索引 0 开始),从而可以快速访问和修改。 什么是“字符串”?从语言学的角度来看,字符串的形式因语言而异。例如,在 C 和 C++ 语言中,字符串表示为存储在内存中的字符线性数组。每个字符按顺序存储,并使用空字符 ('0') 来标记字符串的结束。这使得函数能够在不显式存储其长度的情况下确定字符串的末尾。 然而,像 Java、Python 或 JavaScript 这样的底层语言将字符串视为复杂的对象。这些面向对象的字符串具有用于操作、索引和搜索的方法,这些方法提高了易用性,尽管内存成本更高。 字符串被归类为可变或不可变,这些特性因编程语言而异。
字符串字面量字符串字面量是在源代码中用引号括起来的固定值。
一些语言支持原始字符串字面量,它们会忽略转义序列。
数据库中的字符字符串在关系数据库中,字符数据使用以下类型存储:
虽然 VARCHAR 更灵活且节省空间,但 CHAR 对于固定长度数据(如国家代码或电话号码)通常更快。这取决于特定服务的使用方式以及将处理的数据类型。 编程语言中的字符每种编程语言都有其独特处理字符的方式。这是由于语言的设计优先级、内存模型以及对不同语言的支持。让我们看看一些流行的编程语言以及它们如何处理字符。 C/C++在 C 和 C++ 中,基本字符数据类型是 char,它使用 1 字节(8 位)内存。它可以是有符号的,也可以是无符号的,具体取决于编译器或系统。由于 char 最多支持 256 个值,因此它支持 ASCII 或扩展 ASCII 字符。 为了处理宽字符(ASCII 范围之外的字符),C/C++ 提供了 wchar_t。wchar_t 的大小取决于平台——在 Windows 上通常是 2 字节(UTF-16),在类 Unix 系统上是 4 字节(UTF-32)。可以使用不同的字面量形式定义不同的字符。
std::string、std::wstring 和宽字符串等字符串类型是 C++ 支持的其他示例。 JavaJava 的 char 数据类型是 16 位无符号值,因此它可以表示一个字符,因为它能够容纳 16 位。这意味着它可以表示一个 UTF-16 代码单元以及基本多语言平面 (BMP) 中的所有字符。 对于超出基本多语言平面 (BMP) 的字符,如古代文字或许多表情符号,会使用代理对——两个 char 值组合成一个 Unicode 字符。Java 有 codePointAt() 和 codePointCount() 等方法来访问这些字符。要访问 char 的数值 Unicode 值,可以使用 int 强制类型转换,例如 (int) myChar。 JavaScript与大多数编程语言不同,JavaScript 中的字符串是 UTF-16 代码单元的序列,而不是真正的 Unicode 代码点,因此,BMP 之外的字符使用两个字符的代理对来表示。例如,字符串 '😊' 的长度是两个而不是一个。 JavaScript 具有字符操作函数,例如
Python 3Python 3 Python 3 中的分类器默认使用 Unicode 字符串,类型为 str。字符串中的每个字符都对应一个 Unicode 代码点,例如
Python 中的字符操作在各种字母表之间简单而精确,这使得该语言有利于全球使用。 输入/输出系统中的字符输入和输出系统的管理将用户行为(如字符显示和存储)考虑在编码标准范围内,其中可能包括用户界面和特定于平台的工具。 输入/输出设备在定义系统中使用的键盘为用户提供了特定的标记集来输入字符。每个物理按键都映射到某个字符代码:法语或德语键盘的“A”键映射与英语键盘不同。 值得注意的是,对于复杂语言,如中文、日文和韩文,字符输入过程需要通过 IME(输入法编辑器)/文本编辑器。IME 是一个关键平台,它允许用户输入罗马字符或语音,然后将其转换为该语言的相应字符。由于这些语言包含数千个字符,因此使用有限的键 IME 至关重要。 终端和控制台传统终端仅限于基于 ASCII 或 BASIC 的线路和文本通信。如今,支持线路和文本符号的终端和命令行控制台也已增强了 UTF-8,它提供了完整的 Unicode 支持,这意味着多语言文本以及表情符号都可以轻松访问。 即使有了最新的进展,渲染问题仍然存在。由于东亚字符和表情符号的显示宽度更宽或重音符号重叠,可能会出现用户界面或布局中的错误。开发人员可以使用 wcwidth() 函数近似终端中字符所需的宽度。 文件编码文件编码每个文本文件都有一种称为字节顺序标记 (BOM) 的附加元数据,它指示其编码。例如
因此,所有软件工具和文本编辑器都需要做出正确的猜测或自动检测文件的编码,以便无缝地读写文件而不会出现问题。多语言环境使情况变得更糟,因为对编码解释的错误假设可能导致文本变得面目全非。 数据库和 Web 中的字符在 Web 开发和数据库中,正确处理字符对于确保多语言文本、符号和表情符号的正确存储、检索、显示和交互至关重要。 数据库现代数据库具有强大的字符编码功能,支持不同范围的字符。但是,强烈建议坚持使用 UTF-8 兼容的编码。以 MySQL 为例;标准的 utf8 编码有一个主要限制。 它只支持最多三个字节,因此无法存储所有 Unicode 字符,例如表情符号或稀有字符。相反,应该实现 utf8mb4(UTF-8 最多 4 个字节)。它完全支持 Unicode 范围内的补充字符。除此之外,数据库还应用排序规则,这些规则规定了字符串的比较或排序方式。
选择正确的排序规则可以提高过滤、排序和搜索字符数据的准确性。 常见问题解答 - 字符1. 什么是计算和编程中的字符? 计算中的字符被定义为字母、数字、符号或控制信号,可以显示或处理。它通常使用 1 字节(8 位)在内存中存储,尽管像 UTF-8 这样的更新编码可能对某些字符最多使用 4 个字节。 字符可以使用 char 数据类型表示为“A”、“9”、“%”以及其他有助于文本和字符串形成的符号。 2. ASCII 和 Unicode 有什么区别? ASCII,即美国信息交换标准代码,是一种只有 128 个字符的 7 位编码系统。与 ASCII 不同,Unicode 是一个字符集,旨在涵盖任何语言、表情符号和特殊符号的每个字符。它还有 utf-8、utf-16 和 utf-32 等不同格式,使其适用于全球使用。 3. 什么是字符字符串?在编程中如何使用? 字符串是打包成单词或数字的任何字符组,它们跳过引号,例如“Hello”或‘123’。由于它们简单直接,因此它们经常被用于任何形式的文本处理或组织中。 在大多数编程语言中,有相关的函数可以访问通过索引(JavaScript 中的 chart())的字符,测量它们的长度,进行比较,以及转换为大写或小写版本。 4. VARCHAR 在数据库中的用途是什么? VARCHAR(可变字符字段)是一种在数据库中用于存储文本信息的数据类型。虽然 CHAR 等固定长度类型需要预先分配一定数量字符的内存,但 VARCHAR 更灵活,因为它们只需要为实际存储的字符分配内存。这使得 VARCHAR 广泛用于存储姓名、地址和其他可变长度数据。 5. 为什么字符编码在 Web 开发中很重要? 字符编码之所以重要,仅仅是因为它确保文本得到良好组织、排列、控制并正确显示,无论使用哪种设备和平台。反之亦然。 任何网页或网站都应始终声明 utf-8,因为它支持所有现代字符、表情符号和非英语脚本,这些都需要正确的编码。 下一个主题什么是服务器 |
我们请求您订阅我们的新闻通讯以获取最新更新。