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