为什么UTF-8使用多个字节来表示某些字符?

2024-01-03

我最近经历了一个article http://www.sitepoint.com/do-you-know-your-character-encodings/关于字符编码。我对那里提到的某一点感到担忧。

在第一张图中,作者展示了字符、它们在各种字符集中的码点以及它们在各种编码格式中的编码方式。 例如 é 的代码点是E9. In ISO-8859-1编码它表示为E9. In UTF-16它表示为00 E9。 但在UTF-8它用2个字节表示,C3 A9.

我的问题是为什么需要这样做?可以用1个字节来表示。为什么使用两个字节?你能告诉我吗?


UTF-8 http://en.wikipedia.org/wiki/UTF-8使用 2 个高位(位 6 和位 7)来指示是否还有更多字节:仅低 6 位用于实际字符数据。这意味着任何字符超过7F需要(至少)2 个字节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么UTF-8使用多个字节来表示某些字符? 的相关文章

  • L"" 和 u8"" 之间的区别

    以下有什么区别吗 auto s1 L 你好 auto s2 u8 你好 Are s1 and s2指的是同一类型 如果不是 有什么区别以及首选哪一个 它们不是同一类型 s2是 UTF 8 或窄字符串文字 这C 11标准草案 http www
  • 我怎样才能找出MySQL中的默认字符集/排序规则[重复]

    这个问题在这里已经有答案了 我在 Ubuntu 18 04 上使用 MySQL 和 MySQL Workbench 8 0 当我创建字符串类型的列时 我将字符集 排序规则保留为默认值 在 MySQL Workbench 中 它只是告诉我就是
  • 如何删除字符串中所有不可打印的字符?

    我想我需要删除字符 0 31 和 127 是否有一个函数或一段代码可以有效地完成此操作 7 位 ASCII 如果您的 Tardis 于 1963 年刚刚上市 并且您只想要 7 位可打印 ASCII 字符 则可以使用以下命令删除 0 31 和
  • 使用带有 _O_U8TEXT 的 setmode 处理 unicode 时 C++ 崩溃

    我尝试打印 unicode 的是 setmode fileno stdout O U8TEXT string str u8 unicode hangul cout lt lt str lt lt endl 我使用 setmode 来正确显示
  • 如何处理 R 包中具有 UTF-8 标记字符串的示例数据

    我想包括一个示例数据集 Twitter推文和metadata in an R我正在写的包 我使用下载了一个示例 data frameTwitter API并将其另存为 RData 与相应的 R数据描述文件 在我的包中 当我跑步时R CMD检
  • Windows命令行参数编码是什么?

    Windows 使用什么编码来传递给在 cmd exe 窗口中启动的程序的命令行参数 命令行参数的编码似乎不受使用控制台代码页设置的影响chcp 我将其设置为 UTF 8 代码页 65001 并使用 Lucida Console 字体 如果
  • Delphi 2009之前如何处理UTF-8和ANSI转换?

    在 Delphi 2009 中 我们有 RichEdit1 Lines LoadFromFile OpenDialog1 FileName TEncoding UTF8 RichEdit1 Lines SaveToFile OpenDial
  • 阿拉伯语的 tcpdf 将字符显示为问号 '?????? ???'

    我想创建一个阿拉伯语 pdf 与我的 ms Execl 格式的文件相同 在 php 中使用 tcpdf 创建 pdf 时 阿拉伯字符显示为 分数 这些字符是从我的 Excel 文件中复制的 htmlcontent2 span color 0
  • 以字符集安全的方式获取 Windows 上的进程列表

    这个帖子 https stackoverflow com questions 54686 how to get a list of current open windows process with java给出了一个在 Windows 下
  • UTF-8 和 Unicode,0xC0 和 0x80 是什么意思?

    在过去的几天里 我一直在阅读有关 Unicode 和 UTF 8 的内容 并且经常遇到与此类似的按位比较 int strlen utf8 char s int i 0 j 0 while s i if s i 0xc0 0x80 j i r
  • GCC 4.7 字符串文字的源字符编码和执行字符编码?

    Linux x86 64 上的 GCC 4 7 是否具有默认字符编码 用于验证和解码 C 源文件中字符串文字的内容 这是可配置的吗 此外 当将字符串数据从字符串文字链接到输出的数据部分时 它是否具有默认的执行字符编码 这是可配置的吗 在任何
  • Java中String的字符编码是什么?

    我实际上对 Java 中字符串的编码感到困惑 我有一些问题 如果您知道答案 请帮助我 1 Java字符串在内存中的本机编码是什么 当我写作时String a Hello 将以哪种格式存储 由于 Java 是独立于机器的 我认为系统不会进行编
  • 如何在PHP中设置文本文件编码?

    如何在 PHP 中设置文本文件编码 例如 UTF 8 让我告诉你我的问题 这是我的代码 Output fwrite 具有类似的输出 但是当我创建test txt通过记事本并设置字符集UTF 8输出就是我想要的 我想在 PHP 文件中设置字符
  • 使用 DOMDocument 进行 PHP 编码

  • UTF8 vs. UTF16 vs. char* vs. 什么?谁来给我解释一下这个烂摊子!

    我已经设法忽略所有这些多字节字符的东西 但现在我需要做一些 UI 工作 我知道我在这方面的无知将会赶上我 谁能用几段或更少的内容解释我需要知道什么 以便我可以本地化我的应用程序 我应该使用什么类型 我同时使用 Net 和 C C 并且我需要
  • Python UTF-8转换问题

    在我的数据库中 我存储了一些 UTF 8 字符 例如 名称 字段中的 通过 Django ORM 当我读到这个时 我得到了类似的东西 gt gt gt p name u xce xb1 gt gt gt print p name 我本来希望
  • 从 django 返回带有 BOM 的 UTF-8 编码的 csv

    我正在尝试输出一个用户可以用 Excel 打开的 CSV 文件 我已经用 UTF 8 编码了所有字符串 但是当我用 Excel 打开文件时 我看到了乱码 只有在将文件转换为带 BOM 的 UTF 8 在 Windows 上使用 notepa
  • 如何将 default.html 的字符编码设置为 UTF-8?

    我花了几个小时来验证我的网站HTML 4 01 严格事实上我已经成功了 但仍然有一个警告我无法摆脱 警告是 字符编码不匹配 中指定的字符编码 HTTP 标头 iso 8859 1 是 与中的值不同 元素 utf 8 我将使用该值 来自 HT
  • Navicat utf8 不适用于 mysql 数据库

    我目前正在尝试合并两个不同步的表达式引擎数据库之间的数据更改 为此我选择使用 navicat 该网站在模板中大量使用希腊字符集 当我在 phpmyadmin 中查看希腊语表字段数据时 我按预期看到了希腊语字符 当我将它们加载到 Navica
  • Powershell XMLDocument保存为无BOM的UTF-8

    我构建了一个 System Xml XmlDocument 类型的 XML 对象 scheme gettype IsPublic IsSerial Name BaseType True False XmlDocument System Xm

随机推荐