javascript - 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;
}
推荐阅读
- python - Django - 如何解码 base64url 并在 Django 模板中呈现它
- c++ - 避免使用主程序中的库
- typescript - 如何在 Vue3 中引用组件的 props 接口?
- javascript - 如何在 Vanilla Javascript 中创建整页滚动。没有图书馆
- django - django上的memcache在部署项目时不起作用
- directory - 在目录中侦听新文件的最佳方法是什么?
- python - SCRAPY:在 Scrapy 中从 PANDAS 写入 XLSX 文件
- java - SimpleMatrix 差分 matrix.mult(b) 和 matrix.elementMult(b)
- c++ - 来自有限列表的 C++ 类构造函数参数
- python - 如何在浮点数列表中使用浮点值?