2016-07-25 9 views
0

SOH値 '\ u0001'のユニコードをAsciiに変換する必要があります。なぜこれは機能しないのですか?Javascript unicode to ASCII

var soh = String.fromCharCode(01);
それは '\ U0001'
または私は

var soh = '\u0001' をしようとすると、それはスマイリーフェイスを返しますを返します。 ASCIIに
私はUnicodeが適切SOH値(空白印刷できない文字)になるために取得できますか

答えて

1

JSにはASCII文字列はありません。本質的にUTF-16です。

ブラウザであなたは不運です。あなたがnode.jsをコーディングしているなら、あなたはラッキーです!

バッファを使用して文字列をオクテットにトランスコードし、任意の方法でバイナリデータを操作できます。しかし、いったんあなたがそれを乱したら、必ずバッファから有効な文字列を取り戻すことはできません。あなたはここでそれについての詳細を読む必要があるでしょう

いずれかの方法:ここ

https://mathiasbynens.be/notes/javascript-encoding

か:

https://nodejs.org/api/buffer.html


EDIT:あなたが言うコメントでnode.jsを使用するので、これは上の2番目のリンクからの抜粋です。

const bufferWithSOH = Buffer.from("string with \x01 SOH", "ascii"); 

これはそれを行う必要があります。そうのような一般的なエスケープシーケンス\x01を使用する一般的なASCII文字列に埋め込まれたSOHの文字を作成するには

const buf5 = Buffer.from('test'); 
// Creates a Buffer containing ASCII bytes [74, 65, 73, 74]. 

。その後、bufferWithSOHコンテンツをネットワーク、コンソール、ファイルストリームなどの出力ストリームに送信できます。

Node.jsのドキュメントは、Bufferで文字列を使用する方法をガイドします。上の2番目のリンクを参照してください。

+0

FWIWでは、[iconv-lite](https://github.com/ashtuchkin/iconv-lite)を使用して、ブラウザ内のエンコーディングとノード間のエンコーディングを変換することができます。 – mscdex

+0

お役立ち情報ありがとう。 – pid

+0

私はノードでやっていますが、ASCII文字で何もしたことはありません。SOH ASCII文字を適切に表示することは、一見不可能です。 –

0

だろうが、バイトの配列のようになります。0x00 0x01あなたが\uと呼び出しの後にUnicodeコードポイントを抽出する必要がありますparseIntを入力し、Numberからバイトを抽出します。 JavaScriptがこれに最適な言語ではないかもしれません。

+0

ありがとう、私はちょっとJavascriptでつかまっていて、それを機能させるために必死です。これの例はありますか?私は実際にはASCII文字を扱ったことはないし、どんな助けでも大歓迎です。 –

+0

あなたは何をしようとしていますか? –

+0

私はC++サーバーに接続されているアプリケーション(Windowsのnodejsにあります)を持っています。問題はサーバーにメッセージを送信する際に、適切な "SOH" ASCII文字ではなく、スマイリーフェイスまたはユニコード( '\ 0001')はデリミタとして使用できません。私はそれが空白のスペースか、それがどんなキャラクターであろうと、C++アプリケーションのために読めるようにする必要があります。ありがとう! –