当前位置: 首页 > 知识库问答 >
问题:

C 字符串文本中的 UTF-8 转义序列

牟正真
2023-03-14

在C语言中,我用以下形式指定了一个Unicode字符:

"\uCODEPOINT"

然而,我找不到关于它是如何存储的任何细节。是UTF-8、16、32吗?是否有指定UTF-8编码的符号,或者我必须用十六进制写每个字节?

共有2个答案

康泽宇
2023-03-14

然而,我找不到关于它是如何存储的任何细节。

执行字符集取决于实现。然而,如果默认值不是您想要的,一些编译器确实有一些选项可以更改它。C11标准还有其他方法来指定UTF编码中的Unicode字符串文字(例如u8“Hello”)。

凤财
2023-03-14

\uXXXX是一个(缩写)通用字符名。例如,您可以在程序中的任何位置使用\u0041来代替A--它可以在源文本中,例如作为标识符的一部分,也可以在字符或字符串文本中。如果在文本中使用它,它将与在该文本中使用a完全相同。这同样适用于编码长度超过8位的字符名称……您可以使用通用名称,或者如果您有允许的输入方法,可以直接输入字符。字符在内存中的编码方式取决于实现,取决于字符是否出现在“”或“L”字面值中,并取决于字符是否是执行字符集的成员。请注意C标准中的这一点:

字符常量和字符串文字中的每个源字符集成员和转义序列被转换为执行字符集的相应成员;如果没有对应的成员,则会将其转换为实现定义的成员,而不是空(宽)字符。)

在使用UTF-8编码表示非宽字符串的实现中,出现在非宽字符串文字中的\uXXXX当然会与文字中的所有其他字符一起用UTF-8进行编码。如果\uXXXX出现在宽字符串文字中,它将被编码为值为0xXXXX的宽字符。

 类似资料:
  • 问题内容: 我有一个形式的字符串: 我想通过评估转义序列将其转换为字符♬。但是,我尝试过的所有操作都会导致错误或打印出垃圾。如何强制Python将转义序列转换为文字unicode字符? 我在其他地方阅读过的内容表明,以下代码行应该可以实现我想要的功能,但是会导致UnicodeEncodeError。 我还尝试了以下方法,其结果相同: 这两种方法都会产生字符串’âx9999’,随后打印将无法处理该字

  • 问题内容: 我需要将unicode字符串转换为具有以unicode编码的非ascii字符的字符串。例如,字符串“汉字Max”应显示为“ \ u6F22 \ u5B57 Max”。 我尝试过的 的不同组合 新的String(sourceString.getBytes(encoding1),encoding2) Apache StringEscapeUtils也会转义ascii字符,例如双引号 Str

  • 我有一个从第三方应用程序收到的字符串,我希望在我的Windows界面上使用C#以任何语言正确显示它。 由于编码不正确,我的字符串中有一段在西班牙语中如下所示: AcciÃn 然而它应该看起来像这样: 阿克松 根据这个问题的答案:如何知道C#中的字符串编码,我接收到的编码应该已经在UTF-8中出现了,但它是在编码时读取的。默认值(可能是ANSI?)。 我试图将这个字符串转换成真正的UTF-8,但问题

  • 在普通字符串中,我可以用反斜杠转义: 在字符串文字中有可能做同样的事情吗?反斜杠不再是转义字符: 到目前为止,我看到的唯一解决方案是字符串连接,这非常难看,以及嵌套插值,这开始变得有点可笑:

  • 问题内容: 从我的数据库即时通讯获取以下字符串: 它应该说的是: 我试图像这样将其转换为utf-8: 但是仍然是同样的问题。 有任何想法吗? 问题答案: 使用npm中的utf8模块对字符串进行编码/解码。 安装: 在浏览器中: 在Node.js中: API: 编码: 将任何给定的JavaScript字符串(字符串)编码为UTF-8,并返回该字符串的UTF-8编码版本。如果输入字符串包含非标量值(即

  • 示例代码(在REPL中): 输出: 问题是:它不是人类可读的。我的(聪明的)用户希望用JSON转储来验证甚至编辑文本文件(我宁愿不使用XML)。 有没有办法将对象序列化为UTF-8 JSON字符串(而不是)?