unicode字符内可以有一个ascii控制字符吗

罗塔克罗塔克

我正在解析混合有ASCII和Unicode字符的二进制数据。这是一个例子:

A .. | B .... | C ..

其中2个点代表一个Unicode字符的两个字节。

我的问题是..使用字段分隔符(|)(0x7c)解析此数据是否安全?还是有可能0x7c出现在一个unicode字节之一中?

喜欢

A. || B .... | C ..

其中第2个和第3个字节实际上是unicode字符的一部分。如果我使用|解析 作为分隔符,它将产生错误的值。谢谢

尤卡·科尔佩拉(Jukka K.Korpela)

表述“ unicode字符”似乎表示“字符的UTF-16编码”(从注释中判断)。那么答案是,任何Ascii控制字符和任何Ascii字符都可能出现在此处(更确切地说,UTF-16编码数据的字节之一可能与代表Ascii代码中字符的字节重合)。通常,Ascii字符的UTF-16编码由0字节和包含Ascii代码值的字节组成。并且,例如,U + 7C7C CJK统一IDEOGRAPH-7C7C(xiān)的UTF-16编码由两个0x7C字节组成。

请注意,垂直线“ |” 在任何常规术语中,U + 007C(Ascii中为0x7C)都不是控制字符。ASCII控制字符为0x00至0x1F和0x7F。(有时将空格0x20既描述为控制字符又描述为图形字符,但这是令人困惑的,如今通常可以避免使用。)

为了获得有关解析问题的帮助,您应该更准确地指定数据格式。该格式似乎设计得很差,因为如果想法(看起来)是Ascii字符后面跟随着可变数量的UTF-16编码数据,则无法明确解析该格式例如,在“ A .. | B .... | C ..”中,您真的不知道(没有其他规则)在这里显示为“ | B”(字节0x7C 0x42)实际上不是UTF-16数据,代表U + 7C42或U + 427C(取决于UTF-16的字节序)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用另一个控制字符替换一个控制字符

替换Unicode控制字符

Unicode 控制字符还在使用中吗?

如何grep ASCII控制字符

ASCII控制字符html输入文本

创建一个平面文件,其中在Debian中解释了控制字符

如何删除一个文件夹,从而使名称包含一个控制字符?

获取两个ASCII控制字符之间的子字符串

如果返回“ \ r”,如何控制字符串中的第一个字符?

大多数ASCII控制字符都已过时吗?

在发送给Vespa之前,应该从文件中剥离ASCII控制字符吗?

是否有一个ASCII箭头可以与框形图字符无缝配合?

热通过 sed 命令替换标准输出最后一个控制字符的最后一行?

ASCII转义序列和控制字符配对是否是标准的一部分?

删除命令中的多行输出ASCII控制字符

Python regex:带有re.ASCII的模式仍然可以匹配unicode字符吗?

媒体控制字符的Unicode ttf / woff或Canvas / SVG

如何在JavaFX中显示控制字符Unicode?

上下文相关的语法可以有一个空字符串吗?

Python枚举属性可以有一个空字符串吗?

有一个函数可以在 R 中的字符串之间进行匹配吗?

我有一个在线工具可以将HTML转换为字符串吗?

!= 之后可以只有一个字符串吗

修剪具有控制字符空格的字符串

控制字符是否具有等效的图形字符?

在 Windows 服务器上运行 PHP 的 exec() 函数时,它会向 shell 传递 ASCII 控制字符吗?

可以将具有一个字符的字符串转换为char吗?

终端内的^ S和^ Z控制字符有什么区别?

BOM(字节顺序标记)是控制字符吗?