Cordova套接字发送Unicode

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cordova套接字发送Unicode相关的知识,希望对你有一定的参考价值。

我有一个我们无法触及的遗留Windows TCP服务器,它是使用Powerbuilder 10.5(http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc37774.1252/html/apptech/apptech_unicodesupport.htm)构建的,根据上面的Sybase链接,它需要unicode字符串(UTF-16LE)并需要一个小的移动应用程序,它向该服务器发送一个简单的字符串。

发现Cordova和插件https://github.com/kitolog/sockets-for-cordova构建了一个演示应用程序,但它只适用于ANSI。

这是插件主页的示例代码

var dataString = "Hello world";
var data = new Uint8Array(dataString.length);
for (var i = 0; i < data.length; i++) {
  data[i] = dataString.charCodeAt(i);
}
socket.write(data);

仅出于调试目的,服务器有一个接收ANSI的选项。我们启用了此选项,Cordova应用程序正常运行。

任何想法或建议?

答案

感谢UTF-8 to UTF-16LE Javascript,解决方案是:

var byteArray = new Uint8Array(text.length * 2);
for (var i = 0; i < text.length; i++) {
    byteArray[i*2] = text.charCodeAt(i) // & 0xff;
    byteArray[i*2+1] = text.charCodeAt(i) >> 8 // & 0xff;
}

以上是关于Cordova套接字发送Unicode的主要内容,如果未能解决你的问题,请参考以下文章

cordova-plugin-chrome-apps-socket插件throw chrome undefine错误

Cordova 4.0 上的 Android 片段内的 Cordova webview

iOS 14 Cordova Chrome 套接字绑定不起作用

发送到:无效的参数

Phonegap/Cordova - 套接字插件最终得到: undefined is not a function in cordova.js

移动应用中的套接字认证