2017-04-21 98 views

回答

1

截至2016年3月18日,c.js应该支持(de)序列化UTF8。版本here具有这样做的功能。

有关kdb +中unicode字符集的更多信息,请参见here

+0

我使用的是最新版本的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

+0

尝试打印(使用-1 @)从浏览器获得的字节流 - 应该返回正确的字符。这里有更多关于q如何对待unicode(http://code.kx.com/wiki/Cookbook/Unicode)的信息,我现在将其编辑为原始答案,希望它有帮助。 –

+0

感谢您的链接。 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