【发布时间】: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