【问题标题】:Does Unicode have a special marker character?Unicode 有特殊的标记字符吗?
【发布时间】:2018-02-03 10:23:04
【问题描述】:

我父亲在 90 年代中期为他的公司计算机设计了一种编码。它接近 ISO 8859-2(Latin 2),但有一些差异。

例如,添加了一个特殊的“MARKER CHARACTER”。该字符未确定为文字,但也不是控制字符。

此字符的目的是在需要将文本拆分为部分时由机器插入。请参阅以下 Python 解析器脚本:

re.sub(r'\{\{', r'~{{', text)
re.sub(r'\[\[', r'~[[', text)
re.sub(r'\]\]', r']]~', text)
re.sub(r'\}\}', r'}}~', text)
parts = text.strip('~').split('~')
inCurly = [False]
inSharp = [False]
whereAmI = ['']

for part in parts:
    if part[:2] == '{{':
        inCurly.append(True)
        whereAmI.append('Curly')
    elif part[:2] == '[[':
        inSharp.append(True)
        whereAmI.append('Sharp')

if whereAmI[-1] == 'Sharp' and not inCurly[-1]:
    # some advanced magic on current part,
    # if it is directly surrounded by sharp brackets,
    # but these sharp brackets are not in curly brackets anyhow
    # (not: "{{ (( [[ some text ]] )) }}")

# detecting closing brackets and popping inSharp, inCurly, whereAmI
# joining parts back to text

这是一个用于高级目的的简单解析器,您可以根据需要检测更多的括号或引号。但这有一个巨大的错误。当 ~ 在文本中时,它会破坏事物。

为了这个目的和类似的目的(但我认为是 C 语言),他在他的编码/字符集中添加了那个标记字符。

多年来,我为此使用了三个德语“sharp s”:ßßß,因为几乎不可能连续看到其中三个。但这不是一个理想的解决方案。

昨天我父亲告诉我这个故事,我立刻想到:在 Unicode 家族中是否有类似的东西? Unicode 是一个现代发展的标准,在过去的十年里在世界范围内迅速传播。是否应该有一个特殊字符仅用于此特定目的?

【问题讨论】:

    标签: unicode character-encoding special-characters


    【解决方案1】:

    我不认为有什么具体的名称,但您可能会发现 零宽度空间信息分隔符 等适合此目的。您可以任意选择任何字符作为标记,如果出现在字符串中,则使用转义字符。

    在控制图片块中,有一个组分隔符的符号。

    【讨论】:

    • 好吧,就像我说的,我用三个字母Sharp s
    • 请注意,如果您可以插入分隔符或标记字符,您还可以在 ß(或任何其他字符)前面插入转义字符。或者,如果您希望某些东西保证不会被使用,则可以使用 U+FFFF。 U+FFF9,线间注解锚,也有点类似。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 2015-10-19
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    相关资源
    最近更新 更多