繁体   English   中英

什么是“初始换档状态”?

[英]What is the "initial shift state"?

在标准中,“初始移位状态”这个术语经常被引用,似乎也出现在各种上下文中,例如多字节字符(字符串)和文件。 但是标准没有解释这到底是什么。

那是什么? 一般而言,这里的“转变”是什么?

还:

因为这个术语对我来说似乎在不同的上下文中使用(在字符上下文中,在字符串上下文中和在文件上下文中),我将指出标准中的一些文本短语(尤其是 ISO/IEC: 9899/2018 (C18)),其中包括“初始换档状态”一词:

§ 5.2.1.2 - 多字节字符

— 多字节字符集可能具有与状态相关的编码,其中每个多字节字符序列以初始移位状态开始,并在序列中遇到特定多字节字符时进入其他特定于语言环境的移位状态。

— 标识符、注释、字符串文字、字符常量或标题名称应以初始转移状态开始和结束。


§ 7.21.3 - 文件

“——文件不需要在初始移位状态开始或结束 .274)”

"274) 将文件位置指示符设置为文件结尾,与 fseek(file, 0, SEEK_END) 一样,对于二进制流(由于可能的尾随空字符)或任何具有状态相关编码的流具有未定义的行为这并不一定会以初始转变状态结束。”


§7.21.6.2 - fscanf 函数

对于s转换说明符:

“如果存在 l 长度修饰符,则输入应是从初始移位状态开始的多字节字符序列。”

  • “初始换档状态”是什么意思? 那是什么?
  • 什么是上下文中的“转变”?
  • 在字符串的上下文中,双引号"是格式字符串的开头和结尾吗?

提前致谢。

移位状态是指将某些字节序列解释为字符的状态,这取决于编码。

来自https://www.gnu.org/software/libc/manual/html_node/Shift-State.html

在一些多字节字符代码中,任何特定字节序列的含义都是不固定的; 这取决于在同一字符串中较早出现的其他序列。 通常只有几个序列可以改变其他序列的含义; 这几个被称为移位序列,我们说它们为后面的其他序列设置了移位状态。

为了说明移位状态和移位序列,假设我们决定序列 0200(仅一个字节)进入日语模式,其中 0240 到 0377 范围内的字节对是单个字符,而 0201 进入拉丁语 1 模式,其中0240 到 0377 范围内的单个字节是字符,并根据 ISO Latin-1 字符集进行解释。 这是一个多字节代码,具有两个可选的移位状态(“Japanese mode”和“Latin-1 mode”),以及两个指定特定移位状态的移位序列。

初始移位状态只是最初的移位状态,即在处理开始时; 在上面的示例中,它将是所讨论的序列开始的 ISO Latin-1 或日语中的任何一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM