2
我使用https://github.com/KxSystems/kdb/blob/master/c/c.js将HTML 5 websocket连接到KdB +后端。从后端发送中文字符时遇到问题。 HTML字符集是为UTF-8设置的,但仍然显示比正确字符乱七八糟的代码。当我在Web浏览器控制台中打印它时,结果相同。剂量c.js支持UTF-8?如何在浏览器中显示由KDB +正确发送的Unicode字符?KDB + HTML 5 websocket是否支持UTF-8?
我使用的是最新版本的c.js(kx.com/q/c/c.js)。但看起来它不会正确地使用UTF8的序列化。例如,我做了一个测试,从web浏览器发送中文字符到kdb +后端,如下所示。
in HTML js: var query = {func:"test",arg1:"你好"}; ws.send(serialize(query)); in kdb+ q)test:{show x} q)"\344\275\240\345\245\275" q)'char$"你好" "\304\343\272\303"
正如您所见“\ 344 \ 275 \ 240 \ 345 \ 245 \ 275”与“\ 304 \ 343 \ 272 \ 303”不同。它看起来像c.js使用kdb + dose的不同的(de)序列化UTF8的方法。 – Rongshu尝试打印(使用-1 @)从浏览器获得的字节流 - 应该返回正确的字符。这里有更多关于q如何对待unicode(http://code.kx.com/wiki/Cookbook/Unicode)的信息,我现在将其编辑为原始答案,希望它有帮助。 –
感谢您的链接。 q)的测试:{显示到1×;} q)的测试[ “\ 344 \ 275 \ 240 \ 345 \ 245 \ 275”] 浣犲ソ 但是浣犲ソ不正确。字节流应该是“\ 304 \ 343 \ 272 \ 303”,这对应于你。我不知道为什么从浏览器发来的“你好”序列化为“\ 344 \ 275 \ 240 \ 345 \ 245 \ 275”而不是“\ 304 \ 343 \ 272 \ 303”?@paul – Rongshu