Flex TextArea - 从 Word 复制/粘贴 - xml 解析中的 unicode 字符无效

Posted

技术标签:

【中文标题】Flex TextArea - 从 Word 复制/粘贴 - xml 解析中的 unicode 字符无效【英文标题】:Flex TextArea - copy/paste from Word - Invalid unicode characters on xml parsing 【发布时间】:2012-10-05 23:36:23 【问题描述】:

编辑:

请访问这里:

Flex textArea remove/replace invalid little squares

似乎是问题所在,需要为此找到解决方案。

原文:

我们有一个应用程序,用户可以在其中创建电子邮件并将其发送给不同的用户。我们将电子邮件消息创建为 XML 消息(发件人、目的地、主题、正文等)并将其放入队列中。

另一个应用程序接收消息,对其进行解析并发送电子邮件。我们无法控制它。

现在问题出在测试期间,我们的测试人员从 Word 中复制/粘贴了一些文本并使用了它。现在可能有一些无效字符(在新行或制表符上)在解析器中失败。错误是:

Invalid character in attribute value BODY (Unicode: 0x1A) 

所以现在我们需要防止发送这些无效字符。所以我尝试使用 textArea 限制。在 creationComplete 上是这样的:

contentTextArea.restrict = "A-Z a-z 0-9 .,!@#$%*-+[]()/' \u2424\\";

但不起作用。当我删除 \u2424\ 它可能有效,但它会删除所有新行。那么我需要使用正则表达式替换吗?

对此的任何帮助将不胜感激。

尝试的文字是:

One area where the applications differ greatly is security.  Adding or removing a Permission within a Role does not require a deployment, simply a ‘data fix’.

During development it was communicated that the audience of users .  As such there was no mechanism constructed to migrate between the two systems.  The purpose of this document is to outline two strategies for bring the user base between the two applications into sync.
 

此文本上有制表符/换行符等。

非常感谢

哈里什

【问题讨论】:

我已经看到很多麻烦,将引号从单词复制并粘贴到浏览器。出于某种原因,它们都“卷曲”,必须用普通引号替换。您在术语数据修复周围有这些“弯引号”。将它们更改为常规单引号,我敢打赌它会起作用。然后你只需要找出正则表达式来替换另一个。我使用一个名为 PureText (stevemiller.net/puretext) 的程序在粘贴时净化文本;但我怀疑这可以对用户实施。 如果您可以将字符串解析为有效的 html,请使用 htmltext,通过使用它可以方便用户在消息中应用格式 @Flextras....感谢您的回复。我尝试使用 PureText,即使失败了。我认为解析器做得非常糟糕。请对如何用普通引号替换有任何建议吗? @Imran 我们不需要格式化消息,只需要发送成功即可。形式上不太讲究。感谢您的回复 【参考方案1】:

我可以通过使用 textArea changedHandler 来处理它,只允许某些字符:

if (event.operation is PasteOperation)
    
        event.preventDefault();
        var txt:String = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT).
                        toString().replace(/[^A-Za-z0-9\s$%&*!@-_().]/ig, "");
             ......
    

【讨论】:

以上是关于Flex TextArea - 从 Word 复制/粘贴 - xml 解析中的 unicode 字符无效的主要内容,如果未能解决你的问题,请参考以下文章

Flex spark TextArea 限制复制/粘贴时的最大字符数

从 textarea flex3 中保存空格和换行符

Flex TextArea 自动完成,而不是 TextInput

Flex - 使用 CSS 样式化 TextArea

在 Flex 上附加一个 textarea 文本字段

TextArea htmlText 设置时不更新文本属性(Flex)