将非 ASCII 字符串传递给 NPN_Invoke 时出现问题
我的插件使用 NPN_Invoke 调用 JavaScript 函数,并向其传递一个字符串参数。如果其中的所有字符都是 ASCII,则一切正常。但如果字符串中存在非 ASCII 字符,则 JavaScript 会收到一个空字符串。
我验证了传递给 NPN_Invoke 的 NPVariant 变量(或者更确切地说,数组项)仍然包含有效字符串,因此看起来好像浏览器端发生了错误。
这真的是 Firefox 的 bug(我在 Windows 上用 FF 3.6 和 4.0 进行了测试),还是我做错了什么?有什么解决方法吗?
My plugin calls JavaScript function using NPN_Invoke, passing a string argument to it. Everything works fine if all characters in it are ASCII. But if there're non-ASCII characters in the string, then JavaScript receives an empty string.
I verified that an NPVariant variable (or, rather, an array item), passed to NPN_Invoke, still contain a valid string, so it appears as if something wrong happens on the browser side.
Is this really a Firefox bug (I tested on Windows with FF 3.6 and 4.0), or I am doing something wrong? Any workarounds?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这不是一个错误;而是一个错误。 NPAPI 仅接受 UTF8 字符串。如果字符串不是有效的 UTF8,浏览器将不会接受它。您不能使用 NPString 传递二进制数据。
This isn't a bug; NPAPI only accepts UTF8 strings. If the string is not valid UTF8, then the browser won't accept it. You can't use NPString to pass binary data.