当前位置: 首页 > 面试题库 >

char对象与哪个字符编码(Unicode版本)集相对应?

孙玮
2023-03-14
问题内容

什么的Unicode 字符编码 一个确实char对象对应于:

  • C#

  • 爪哇

  • JavaScript (我知道实际上没有char类型,但是我假设该String类型仍然实现为Unicode字符数组)

通常,在编程语言之间是否存在使用特定 字符编码 的通用约定 ?

更新资料

  1. 我试图澄清我的问题。我所做的更改将在下面的评论中讨论。
  2. 回复:“您要解决什么问题?” ,我对从独立于语言的表达式生成代码感兴趣,并且文件的特定编码是相关的。

问题答案:

我不确定我是否在回答您的问题,但请允许我发表一些意见,希望能有所启发。

在核心上,像我们正在谈论的通用编程语言(C,C
++,C#,Java,PHP)没有“文本”的概念,而仅仅是“数据”的概念。数据由整数值(即数字)序列组成。这些数字背后没有内在的 含义

将数字流转换为文本的过程是语义之一,通常留给消费者将相关的语义分配给数据流。

警告:
我现在将使用“编码”一词,不幸的是它具有多种不等同的含义。“编码”的第一个含义是将含义分配给数字。数字的语义解释也称为“字符”。例如,在ASCII编码中,32表示“空格”,65表示“大写A”。ASCII仅将含义分配给128个数字,因此每个ASCII
字符
都可以方便地用一个8位字节表示(最高位始终为0)。有许多将字符分配给256个数字的编码,因此所有编码每个字符使用一个字节。在这些固定宽度编码中,文本字符串的字符数与字节表示的数目一样多。

现在,Unicode也是一种编码,即将含义分配给数字。在前128个数字上,它与ASCII相同,但从理论上讲,它为2 ^
21个数字分配含义。因为有许多含义在写作意义上并不是严格意义上的“字符”(例如零宽度的连接符或变音符号),所以术语“代码点”比“字符”更可取。但是,任何至少21位宽的整数数据类型都可以表示一个代码点。通常,人们选择一种32位类型,这种编码(其中每个元素代表一个代码点)称为UTF-32或UCS-4。

现在,我们有“编码”的第二含义:我可以采取Unicode代码点的串和 变换
成8位或16位值的字符串,从而进一步“编码”中的信息。在这种新的转换形式(称为“ unicode转换格式”或“
UTF”)中,我们现在具有8位或16位值的字符串(称为“代码单位”),但是每个单独的值通常都不对应处理任何有意义的事情-
首先必须将其解码为一系列Unicode代码点。

因此,从编程角度来看,如果要修改 文本
(而不是字节),则应将文本存储为Unicode代码点序列。实际上,这意味着您需要32位数据类型。charC和C
++中的数据类型通常为8位宽(尽管这只是最小值),而在C#和Java中,数据类型始终为16位宽。可以想到,可以使用8位char存储 转换后的
UTF-8字符串,而16位char可存储 转换后的
UTF-16字符串,但是为了获得原始的,有意义的Unicode代码点(尤其是在字符串的长度(以代码点为单位)),您将始终必须执行解码。

通常,您的文本处理库将能够为您进行解码和编码,因此它们将很乐意接受UTF8和UTF16字符串(但要付出一定的代价),但是如果您想避免这种额外的间接访问,请将您的字符串存储为原始Unicode足够宽的类型的代码点。



 类似资料:
  • 字符编码是一种将字节转换为字符的方法。 要验证或显示HTML文档,程序必须选择字符编码。 HTML 5作者有三种设置字符编码的方法 - HTTP Content-Type标头 如果您正在编写cgi或类似的程序,那么您将使用HTTP Content-Type标头来设置任何字符编码。 以下是一个简单的例子 - print "Content-Type: text/html; charset=utf-8\

  • 问题内容: 您是否知道将Javascript对象编码为可通过请求传递的快速简单的方法? 不,没有其他框架-只是纯Javascript :) 问题答案: 像这样? 编辑:这也将转换递归对象(使用php“ array”表示法作为查询字符串)

  • 问题内容: 我想将Javascript对象编码为JSON字符串,但遇到了很多困难。 对象看起来像这样 我想将其放入JSON字符串以将其放入ajax请求中。 你明白了。不管我做什么,都行不通。所有JSON编码器(如json2等)都会产生 好吧,那对我没有帮助。基本上我想拥有类似php 函数的功能。 问题答案: 除非定义了变量,否则可能是造成您麻烦的原因。这样的事情会做你想要的: 您也可以一次完成所有

  • 我应该使用UTF-8、UTF-16或UTF-32中的哪一个?为什么呢?

  • 问题内容: 我有一个相当大的python 2.6应用程序,上面散布着许多打印语句。我一直在使用unicode字符串,通常效果很好。但是,如果我重定向应用程序的输出(例如“ myapp.py> output.txt”),则有时会出现如下错误: 我猜如果有人将LOCALE设置为ASCII也会出现相同的问题。现在,我完全理解此错误的原因。我的Unicode字符串中有些字符无法用ASCII编码。很公平。但

  • 本文向大家介绍JavaScript字符集编码与解码详谈,包括了JavaScript字符集编码与解码详谈的使用技巧和注意事项,需要的朋友参考一下 一、字符集 1)字符与字节(Character) 字符是各种文字和符号的总称,包括乱码;一个字符对应1~n个字节,一字节对应8位,每位用0或1表示。 2)字符集(Character Set) 字符集是多个字符的集合,每个字符集包含的字符个数不同,常见字符集