2017-04-21 3 views
2

Ich verwende https://github.com/KxSystems/kdb/blob/master/c/c.js für die Verbindung von HTML 5 Websocket mit KdB + Backend. Ich habe ein Problem beim Senden von chinesischen Zeichen aus dem Backend. HTML-Zeichensatz ist für UTF-8 festgelegt, zeigt jedoch immer noch den Fehlercode an, der korrekter ist. Gleiches Ergebnis, wenn ich es in der Webbrowser-Konsole drucke. Dosis c.js unterstützt UTF-8? Wie kann ich Unicode-Zeichen korrekt anzeigen, die von KDB + im Browser gesendet wurden?Unterstützt KDB + HTML 5 Websocket UTF-8?

Antwort

1

Ab dem Stand 2016.03.18 sollte c.js die (De-) Serialisierung von UTF8 unterstützen. Die Version here hat die Funktionen dazu.

Weitere Informationen über Unicode Zeichensatz in kdb + finden Sie here.

+0

Ich verwende die neueste Version von c.js (kx.com/q/c/c.js). Sieht aber so aus, als würde es die (De-) Serialisierung von UTF8 nicht richtig dosieren. Ich habe beispielsweise einen Test zum Senden chinesischer Zeichen vom Webbrowser an das kdb + -Backend wie unten beschrieben durchgeführt. 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" Wie Sie sehen können, unterscheidet sich "\ 344 \ 275 \ 240 \ 345 \ 245 \ 275" von "\ 304 \ 343 \ 272 \ 303". Es sieht so aus, als ob c.js eine andere Methode der (De-) Serialisierung von UTF8 aus kdb + Dosis verwendet. – Rongshu

+0

Versuchen Sie, den Bytestream (mit -1 @) zu drucken, den Sie vom Browser erhalten haben - das sollte die korrekten Zeichen zurückgeben. Es gibt weitere Informationen darüber, wie q Unicode behandelt (http://code.kx.com/wiki/Cookbook/Unicode), die ich jetzt in die ursprüngliche Antwort bearbeiten werde, hoffe, dass es hilft. –

+0

Danke für den Link. q) Test: {Show -1 x;} q) Test [ "\ 344 \ 275 \ 240 \ 345 \ 245 \ 275"] 浣 犲 ソ Aber 浣 犲 ソ ist falsch. Der Bytestream sollte "\ 304 \ 343 \ 272 \ 303" sein, was 你好 entspricht. Ich weiß nicht, warum "你好" vom Browser serialisiert an "\ 344 \ 275 \ 240 \ 345 \ 245 \ 275" statt "\ 304 \ 343 \ 272 \ 303" gesendet wurde? @paul – Rongshu