我偶然发现了一个有趣的错误......仍在试图找出究竟发生了什么。也许你可以提供帮助。
首先,上下文。我目前正在建立另一个人到HTML转换器(由于某些原因我不会在这里激励,但我需要它。)
因此,请查看下面的屏幕截图(请参阅链接),更准确地说是在概述的位置。看到?在上壳上,我有& lt;和& gt;,即转义html。 虽然在下面的外壳上我有<和>直接
但正如你所看到的那样(或者我是否真的需要看玻璃?),man 2 semget | webmanner
命令which webmanner
与{{1}}一样。这两个大致在同一时刻执行,没有对脚本之间进行任何修改。
[哎呀,还不能张贴图片......链接就是这里的]
http://aspyct.org/media/webmanner-bug.png
但下面的shell比较旧(约1小时前开放)。较新的贝壳全部打印出来& lt ;.所以我的第一个猜测是,它以某种方式对文件的旧inode或旧块或其他任何内容进行了缓存引用。
因此,我在开始时修改了部分脚本,然后在结尾处修改了不同的消息。而且,令人惊讶的是,这两个终端上显示的消息。但是,& lt;和<。
我很困惑......如何解释这种行为?我正在研究OSX 10.8(Mountain Lion)
编辑:好的,有一个很大的区别:下面的shell使用ruby 1.9.3,而上面的是1.8.7。两个版本之间的字符串处理是否有任何已知的差异?
答案 0 :(得分:2)
您使用的是htmlentities库吗?如果是这样,那么这个bug修复可能就是你所看到的
Ruby 1.9.3与1.9.2的行为略有不同:结果 即使只包含ASCII字符,encode也不是ASCII。 这可能并不重要,但这种变化使两个版本都产生了 同样的结果。
https://github.com/threedaymonk/htmlentities/commit/46dafc959de03a02d0c1705bef7f1b157b350025