标签: invalid-characters

在lxml中过滤无效unicode字符的中心方法?

众所周知,XML文档中不允许使用某些字符范围.我知道过滤掉这些字符的解决方案(如[1],[2]).

按照不要重复自己的原则,我宁愿在一个中心点实现其中一个解决方案 - 现在,我必须在输入之前清理任何可能不安全的文本lxml.有没有办法实现这一点,例如通过继承lxml过滤器类,捕获一些异常或设置配置开关?


编辑:希望有点澄清这个问题,这里是一个示例代码:

from lxml import etree

root = etree.Element("root")
root.text = u'\uffff'
root.text += u'\ud800' 

print(etree.tostring(root))

root.text += '\x02'.decode("utf-8")
Run Code Online (Sandbox Code Playgroud)

执行此操作会得到结果

<root>&#65535;&#55296;</root>

Traceback (most recent call last):
  File "[…]", line 9, in <module>
    root.text += u'\u0002'
  File "lxml.etree.pyx", line 953, in lxml.etree._Element.text.__set__ (src/lxml/lxml.etree.c:44956)
  File "apihelpers.pxi", line 677, in lxml.etree._setNodeText (src/lxml/lxml.etree.c:20273)
  File "apihelpers.pxi", line 1395, in lxml.etree._utf8 (src/lxml/lxml.etree.c:26485)
ValueError: All strings must be XML compatible: Unicode or ASCII, no …
Run Code Online (Sandbox Code Playgroud)

python xml unicode lxml invalid-characters

9
推荐指数
1
解决办法
1104
查看次数

使用Android的XmlPullParsers解析无效的&符号

我正在编写一个消耗一些XHTML的小屏幕抓取应用程序 - 不用说XHTML无效:&符号不会被转义为&amp;.

我正在使用Android XmlPullParser,它会在错误编码的值上显示以下错误:

org.xmlpull.v1.XmlPullParserException: unterminated entity ref 
(position:START_TAG <a href='/Fahrinfo/bin/query.bin/dox?ld=0.1&n=3&i=9c.0323581.1266265347&rt=0&vcra'>
@55:134 in java.io.InputStreamReader@43b1ef70) 
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?我考虑过以下解决方案:

  1. InputStream另一个替换为带有实体引用的&符号
  2. 配置Parser,以便它神奇地接受不正确的标记

哪些可能更成功?

android invalid-characters xml-parsing

7
推荐指数
2
解决办法
6250
查看次数

SQL无效转换返回null而不是抛出错误

我有一个带varchar列的表,我想找到与某个数字匹配的值.因此,我们可以说该列包含以下条目(现实生活中除了数百万行):

123456789012
2345678
3456
23 45
713?2
00123456789012
Run Code Online (Sandbox Code Playgroud)

所以我决定我想要所有数字上的行123456789012写一个看起来像这样的语句:

SELECT * FROM MyTable WHERE CAST(MyColumn as bigint) = 123456789012
Run Code Online (Sandbox Code Playgroud)

它应该返回第一行和最后一行,但整个查询会爆炸,因为它无法将"23 45"和"713?2"转换为bigint.

是否有另一种方法可以进行转换,为无法转换的值返回NULL?

t-sql invalid-characters

7
推荐指数
2
解决办法
9133
查看次数

xsl试图输出'<'而不是'&lt;'

更新:

这个问题仍然存在,尽管它与以前不完全相同.下面是输入内容,输出内容和输出内容的示例

输入的一个例子:

&amp;lt;p&amp;gt;&amp;lt;span style=&amp;quot;font-size: medium&amp;quot;&amp;gt;Product description text&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
Run Code Online (Sandbox Code Playgroud)

当前输出:

&lt;p&gt;&lt;span style="font-size: medium"&gt;Product description text&lt;/span&gt;&lt;/p&gt;
Run Code Online (Sandbox Code Playgroud)

预期产量:

<p><span style="font-size: medium">Product description text</span></p>
Run Code Online (Sandbox Code Playgroud)

.

使用CDATA有帮助,因为它允许我输入'<'但是如上面的输出所示,即使使用disable-output-escaping,它在输出中也发生了变化

.

.

原始问题:

我得到的错误是"'<',十六进制值0x3C,是一个无效的属性字符"

我要做的是替换所有出现的< 和> 分别用<和>.

为了保持尽可能简单,这里只是LT的代码:

<xsl:variable name="lt">
  <xsl:text><</xsl:text>
</xsl:variable>
<xsl:variable name="lthex">&amp;lt;</xsl:variable>
<xsl:copy-of select="ew:replacestring(products_description/node(),$lthex,$lt)"/>
Run Code Online (Sandbox Code Playgroud)

我尝试过各种各样的东西代替文本,例如价值等.

我知道代码格式和链接到它的vb代码没有任何问题,因为我多次使用它来替换和输出其他地方

这个问题虽然是我希望<和>字面上输出,而不是浏览器随后看到并改变的代码

.

如果您需要更多信息,请问(我很难解释这个问题)

任何帮助将不胜感激

xslt invalid-characters xslt-1.0

6
推荐指数
2
解决办法
2万
查看次数

如何阻止XMLReader抛出无效的XML字符异常

所以我有一些XML:

<key>my tag</key><value>my tag value &#xB;and my invalid Character</Value>

和XMLReader:

using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
     while (reader.Read())
     {
         //do my thing
     }
}
Run Code Online (Sandbox Code Playgroud)

我已经从这里实现了CleanInvalidCharacters方法,但由于" "尚未编码,因此不会被删除.

读者会抛出错误.阅读(); 有异常的行:

十六进制值0x0B,是无效字符.

c# xml xmlreader invalid-characters

6
推荐指数
1
解决办法
5598
查看次数

检查无效输入

我正在编写一个程序,它将一个字符串作为输入,并检查其中的元素是否有效.我希望我的输入只包含较低的字符和句点,感叹号和空格,而不是空字符串.如果用户输入空字符串或无效字符,则会要求他们再次输入字符串:

我知道如何检查字符串中的字符.我用这种方法

alpha ="abcdefghijklmnopqrstuvwxyz"
message= input("Enter message: ")
for i in message:
   if i in alpha:
      print i
Run Code Online (Sandbox Code Playgroud)

通常我会使用下面的方法来检查无效输入,但如果我想检查字符串中的字符,它将不适用于这种情况.我只能使用它来检查消息是否为空

textOK = False
while not textOK:
        message= input(prompt)
        if len(message) == 0:
          print("Message is empty)
        else:
          textOK= True
Run Code Online (Sandbox Code Playgroud)

这将在用户输入空字符串时重新提示.我不知道如何结合这两种方法.简而言之,我想检查我的输入是否只包含较低的字母,句号,感叹号和空格.如果它包含其他特殊字符或数字或者是空字符串,则会提示用户再次输入该消息.请帮忙!!

python invalid-characters while-loop caesar-cipher

6
推荐指数
1
解决办法
2795
查看次数

ASP.NET Base-64 字符串中的无效字符

我最近在我的网站上实现了 ELMAH,我注意到我们经常收到“Base-64 字符串中的无效字符”错误。我自己从未触发过它,我们的用户也没有抱怨过它,所以我不知道发生了什么。从我所能找到的一点来看,视图状态似乎可能变得太大或被损坏或其他什么。有谁知道造成这种情况的原因以及如何预防?以下是我认为 YSOD 中的相关内容。

[FormatException: Invalid character in a Base-64 string.]
[ViewStateException: Invalid viewstate. 
[HttpException (0x80004005): The client disconnected.]
Run Code Online (Sandbox Code Playgroud)

我可以对这些错误做些什么,还是应该在 ELMAH 中过滤它们?

asp.net elmah invalid-characters

5
推荐指数
1
解决办法
2764
查看次数

在Python中过滤字符串

我正在制作检查字符串(电子邮件)的算法 - 就像"电子邮件地址有效",但它们是规则.电子邮件的第一部分必须是包含1-8个字符的字符串(可以包含字母,数字,下划线[_] ...电子邮件包含的所有部分)以及@电子邮件的第二部分之后拥有1-12个字符的字符串(也包含所有合法表达式),它必须以顶级域名.com结尾

email = raw_input ("Enter the e-mail address:")
length = len (email)
if length > 20 
    print "Address is too long"
elif lenght < 7:
    print "Address is too short"  
if not email.endswith (".com"):   
    print "Address doesn't contain correct domain ending"   
try:
    first_part = len (splitting[0])
    second_part = len(splitting[1])  

    account = splitting[0]
    domain = splitting[1] 

    list = "abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_."

    for c in account: 
        if c not in list:
            print "Invalid char", "->", c,"<-", "in account name of e-mail" …
Run Code Online (Sandbox Code Playgroud)

python error-handling invalid-characters

5
推荐指数
1
解决办法
603
查看次数

在 Windows 上使用无效字符提交 Git

我有一个 Git 存储库,我不小心在 4 次提交前推送了一个文件,该文件位于(相对于存储库根文件夹的路径):/Core/C:/testoutput/agwqe1s.xml

我在我的 Linux 机器上做了这个,所以创建的实际文件没有任何问题。问题是当我回到我的 Windows 机器时,我无法切换到包含此文件的分支,因为 Windows 只是拒绝创建这样的文件夹。好的,没问题,我在 Linux 端删除了文件并提交了它,但即使很困难它也不起作用。Git 仍然试图在我的 Windows 机器上创建这个非法文件,我不知道该怎么做。

我知道我可以从头开始重新制作 repo,但后来我丢失了整个提交日志历史记录,我想避免这种情况。我在这里有什么选择?

windows git version-control invalid-characters repository

5
推荐指数
1
解决办法
2605
查看次数

C#:删除字符串中的多个无效字符

我是 C# 新手。假设我有一个这样的字符串:

\n\n
string test = \'yes/, I~ know# there@ are% invalid\xc2\xa3 characters$ in& this* string^";\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我想删除一个无效符号,我会这样做:

\n\n
if (test.Contains(\'/\')) \n{ \n    test = test.Replace("/","");\n} \n
Run Code Online (Sandbox Code Playgroud)\n\n

但是有没有办法我可以使用符号列表作为 and 的Contains参数Replace函数的参数,而不是逐个删除符号?

\n

c# string replace invalid-characters contains

5
推荐指数
1
解决办法
1181
查看次数