0

我有一个编辑器,它叫做editarea,它应该作为一个编辑器,用于嵌入网页中的编程语言;但我们将它用作其他东西的编辑器。正如editarea手册中解释的那样,我们构建了一个新的语法文件,但它包含特殊字符,因为它必须识别的语法包含意大利语单词。下面是语法文件的一些快照:

    ,'KEYWORDS' : {
     'feelings' : [
        "emozioni","gioia","felicit\xE0", etc.

这些是正则表达式:

    ,'REGEXPS' : {
        'lemmas' : {
        'search' : "()(#[A-Za-z0-9'èéòàìù]*)()"
        //'search' : "()(#[A-Za-z0-9'èéòàìù\s]+#)()"
        ,'class' : 'lemmas'
        ,'modifiers' : 'g'
        ,'execute' : 'before'
    },

如您所见,带有重音的字母在“关键字”中用代码表示,而在“正则表达式”中没有代码。问题在于,以重音字母结尾的单词如果单独输入,则不会以正确的方式“着色”。如果您在重音后键入一个字母,那么它们就会被识别(但在这种情况下,它们不应该被识别为单词,而是作为正则表达式的引理)。这个错误非常令人困惑。我尝试对文本区域的输入和 colorize_text 函数的参数进行编码和解码,并使用这些函数:

function encode_utf8(s) {
  return unescape(encodeURIComponent(s));
}

function decode_utf8(s) {
  return decodeURIComponent(escape(s));
}

但似乎什么都没有改变。如果有人比我更了解这个问题(我不明白为什么当我在带有重音的单词中添加一个字符时它会正确地为文本着色)然后请用简单的语言向我解释。谢谢你的努力。艾格妮丝

4

0 回答 0