Unicode控制字符

本文详细探讨了Unicode控制字符在处理多方向文本时的作用,包括Unicode方向属性、全局方向和方向串的概念,以及隐式和显式控制字符的使用。通过LRM、RLM、LRE、RLE、LRO、RLO和Isolate等控制字符,可以调整文本的显示顺序,解决BIDI算法中的问题。此外,还提到了相关的CSS属性`direction`和`unicode-bidi`在控制文本方向上的应用。
摘要由CSDN通过智能技术生成

Unicode控制字符

一、前言

在所有主要的Web浏览器中内存中的字符顺序(逻辑)与它们显示的顺序(可视)是不同的。Unicode 定义了它其中每个字符的方向属性,浏览器应用的一组规则(通过这个来进行自动判断文本Unicode方向属性应该使用哪种方向)在显示时产生正确的顺序由Unicode双向算法进行描述,也可简称为BIDI算法。控制字符,有时候也称非打印字符,是出现在特定的信息文本中,表示某一控制功能的字符。这类字符并不显示,只包含某种特定的功能。

二、Unicode方向属性

Unicode方向属性包含以下三种类型:

  • 强字符:大部分的字符都属于强字符,比如英文字母、汉字和阿拉伯字母。它们的方向性是确定的(英文字母是从左到右,而阿拉伯字母则从右到左),和其上下文的bidi属性无关。并且,强字符在bidi算法中可能会影响其前后字符的方向性;
  • 弱字符:数字和数字相关的符号属于弱字符。它们的方向性是确定的,但对其前后字符的方向性不会产生影响;
  • 中性字符:大部分的标点符号和空格属于中性字符。它们的方向性是不确定的,由上下文的bidi属性来决定其方向。
方向性 相关字符 效果
Left-to-Right (LTR) 强字符从左至右(英文字母、汉字以及世界上大部分从左到右书写的文字) 方向性确定,LTR,和上下文无关。并且可能会影响其前后字符的方向性。
Right-to-Left (RTL) 强字符从右至左(阿拉伯文字、波斯语以及大部分从右到左书写的文字) 方向性确定,RTL,和上下文无关。并且可能会影响其前后字符的方向性。
Left-to-Right (LTR) / Right-to-Left (RTL) 弱字符(数字和数字相关的符号) 和强字符一样方向性也是确定的,但是不会影响前后字符的方向性。
Neutral 中性字符(大部分标点符号和空格) 方向性不确定,由上下文环境决定其方向。
2.1 全局方向

也可以成为基础方向。全局方向是一个区域中的总体方向。中英文环境一般是 (LTR) 从左至右,而阿拉伯文环境则为 (RTL) 右至左的书写顺序。我们可以通过dir属性或者direction样式,设置指定方向。

2.2 方向串

方向串是指在一段文字中具有相同方向性的连续字符,并且其前后没有相同方向性的其它方向串。如以下例子:

  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
ASCII 码中的控制字符是指在文本通信中起到控制作用的字符,如换行符、回车符、制表符等。在 C# 中,可以使用字符的 Unicode 编码来表示 ASCII 码中的控制字符。 下面是一些常见的 ASCII 码控制字符及其 Unicode 编码在 C# 中的表示方法: | 控制字符 | Unicode 编码 | C# 表示方法 | | :------: | :----------: | :---------: | | NUL | 0x0000 | `'\0'` 或 `'\u0000'` | | SOH | 0x0001 | `'\u0001'` | | STX | 0x0002 | `'\u0002'` | | ETX | 0x0003 | `'\u0003'` | | EOT | 0x0004 | `'\u0004'` | | ENQ | 0x0005 | `'\u0005'` | | ACK | 0x0006 | `'\u0006'` | | BEL | 0x0007 | `'\a'` 或 `'\u0007'` | | BS | 0x0008 | `'\b'` 或 `'\u0008'` | | HT | 0x0009 | `'\t'` 或 `'\u0009'` | | LF | 0x000A | `'\n'` 或 `'\u000A'` | | VT | 0x000B | `'\u000B'` | | FF | 0x000C | `'\f'` 或 `'\u000C'` | | CR | 0x000D | `'\r'` 或 `'\u000D'` | | SO | 0x000E | `'\u000E'` | | SI | 0x000F | `'\u000F'` | | DLE | 0x0010 | `'\u0010'` | | DC1 | 0x0011 | `'\u0011'` | | DC2 | 0x0012 | `'\u0012'` | | DC3 | 0x0013 | `'\u0013'` | | DC4 | 0x0014 | `'\u0014'` | | NAK | 0x0015 | `'\u0015'` | | SYN | 0x0016 | `'\u0016'` | | ETB | 0x0017 | `'\u0017'` | | CAN | 0x0018 | `'\u0018'` | | EM | 0x0019 | `'\u0019'` | | SUB | 0x001A | `'\u001A'` | | ESC | 0x001B | `'\u001B'` | | FS | 0x001C | `'\u001C'` | | GS | 0x001D | `'\u001D'` | | RS | 0x001E | `'\u001E'` | | US | 0x001F | `'\u001F'` | 其中,`'\a'` 表示响铃符,`'\b'` 表示退格符,`'\t'` 表示制表符,`'\n'` 表示换行符,`'\f'` 表示换页符,`'\r'` 表示回车符。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值