【发布时间】:2015-09-01 14:47:02
【问题描述】:
我正在尝试剥离在我的一个文件中找到的 0x0 字符,但我发现 xml 解析器正在阻塞它。
所以我使用 gsub:
xmlBody.gsub!(/\u0000/i,'')
替换它。 xml 解析器现在已经满足了。然后保存 xml 文件(使用 UTF-8 编码)。
但是,当我在 Sublime 文本编辑器中重新打开文件时,Sublime 崩溃了。当我使用另一个编辑器(不会崩溃)并将文件的 xml 内容复制/粘贴到 xml 验证器中时,验证器说 char 0x0 无效。似乎 gsub 没有真的 删除该字符。
有什么建议吗?
我还尝试对 xmlBody 使用 force_encoding("UTF-8"),并使用 xmlBody.delete!(0x0) 获得相同的结果。
【问题讨论】:
-
我会用常规 File 类打开、替换和写回文件,尝试用 ST 打开,然后用 xml 解析器打开它
-
xml来自一个rest服务,是在xml解析之后写的。但是第一次写入文件时,0x0 已经在那里了。源是一个 mongodb 记录,里面有那个坏字符。
-
所以你得到一个 0x0 的 xml 文件,在那之后你需要什么?肯定不会用ST打开吧?缺乏 iaa 的太多信息。您可以发布指向该服务的链接或有问题的文件吗?
-
在文件写入时再次剥离字符,解决了这个问题。
标签: ruby unicode string-substitution