【问题标题】:Javascript Special Characters coming back incorrectlyJavascript 特殊字符错误返回
【发布时间】:2011-01-24 18:31:42
【问题描述】:

有一个页面上有某些特殊字符,当通过 javascript 检索这些字符的值时,我得到了一个奇怪的转换。字符“Œ”作为“R”返回,其小写版本“œ”作为“S”返回。这是javascript的限制还是可能是浏览器。这是来自在 Firefox 中的测试。这也是通过 repl 客户端 (Jssh/MozRepl) 检索的,所以这似乎是这些客户端本身而不是浏览器的问题。

【问题讨论】:

    标签: javascript firefox special-characters read-eval-print-loop


    【解决方案1】:

    您可能在某个地方遇到了编码问题。错误处理文本编码的机会很多。如果您发布一些代码,我们也许可以帮助您找到它。

    【讨论】:

    • var outstream = transport.openOutputStream(Ci.nsITransport.OPEN_BLOCKING , 0, 0);这是我在 javascript 中使用的输出流(我可以在 Firefox 中配置的不多,因为文档没有太大帮助)
    • 显然 firefox 将 nsITransport 流设置为 UTF-8,因此 255 以上的任何字符都无法正确显示。
    • 您能分享一下您是如何修复它的吗?也许一些示例代码会有所帮助。
    【解决方案2】:

    对于非 ASCII 字符,输出流在脚本上是不安全的,因此您需要将流包装在 nsIBinaryOutputStream、nsIUnicharOutputStream 或 nsIConverterOutputStream 中。

    【讨论】:

    • 我刚刚将它们转换为字符代码数组,然后输出并转换它。它仅包含 255 个字符代码以上的字符。我还没有看到好的 nsITransport 文档,但是你能用 openOutputStream 打开这些流吗?
    • 您所做的是在初始化包装流时将现有流作为参数传递。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多