我的父亲在90年代中期为他公司的计算机创建了一种编码,用于工程目的。它与ISO 8859-2(Latin 2)接近,但有一些区别。
例如,添加了一个特殊的“标记字符”。这个字符不是字面意义上的,但也不是控制字符。
这个字符的目的是在需要将文本分成几部分时由机器插入。请参见以下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 是过去十年间在全球范围内急剧发展的现代标准。应该有一个专门为这个特定目的设计的特殊字符,对吗?