2017-04-21 5 views
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をサポートしていますか?

答えて

1

2016.03.18から、c.jsはUTF8の直列化をサポートする必要があります。バージョンhereにはそのような機能があります。

kdb +のユニコード文字セットの詳細は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 +からのUTF8の直列化の別の方法を使用しているようです。 – Rongshu

+0

ブラウザから取得したバイトストリームを-1 @で印刷してください。正しい文字が返されるはずです。ここでは、qがunicode(http://code.kx.com/wiki/Cookbook/Unicode)をどのように扱うかについて、ここでより多くの情報があります。これを元の解答に編集しておきましょう。 –

+0

リンクをありがとう。間違っているソ[ "275 \ 245 \ 345 \ 240 \ \ 275 \ 344"] Q)試験 浣犲ソ しかし浣犲; {ショー-1 X}: Q)試験。 bytestreamは "\ 304 \ 343 \ 272 \ 303"であり、これは你好に対応しています。 "\ 304 \ 343 \ 272 \ 303"ではなく "\ 344 \ 275 \ 240 \ 345 \ 245 \ 275"にシリアル化されたブラウザから "你好"が送られた理由はわかりません@paul – Rongshu

関連する問題