2017-04-21 204 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