需要將SOH值'\ u0001'的unicode轉換爲Ascii。爲什麼這不起作用?Javascript unicode to ASCII
var soh = String.fromCharCode(01);
它返回 '\ U0001'
或當我嘗試
var soh = '\u0001'
它返回一個笑臉。
我怎樣才能獲得的unicode成爲適當的SOH值(空白不可打印字符)
需要將SOH值'\ u0001'的unicode轉換爲Ascii。爲什麼這不起作用?Javascript unicode to ASCII
var soh = String.fromCharCode(01);
它返回 '\ U0001'
或當我嘗試
var soh = '\u0001'
它返回一個笑臉。
我怎樣才能獲得的unicode成爲適當的SOH值(空白不可打印字符)
JS沒有ASCII字符串,它們本質上是UTF-16。
在瀏覽器中,你運氣不好。如果你正在編寫node.js,那麼你很幸運!
您可以使用緩衝區將字符串轉碼爲八位字節,然後隨意操作二進制數據。但是一旦你搞砸了,你不一定會從緩衝區中取回一個有效的字符串。
無論哪種方式,你必須在這裏閱讀更多關於它:
https://mathiasbynens.be/notes/javascript-encoding
或在這裏:
https://nodejs.org/api/buffer.html
編輯:在你說的評論你使用node.js,所以這是上面第二個鏈接的摘錄。
const buf5 = Buffer.from('test');
// Creates a Buffer containing ASCII bytes [74, 65, 73, 74].
要創建嵌入在一個共同的ASCII字符串的字符SOH使用常見的轉義序列\x01
像這樣:
const bufferWithSOH = Buffer.from("string with \x01 SOH", "ascii");
這應該這樣做。然後,您可以將bufferWithSOH
內容發送到輸出流,如網絡,控制檯或文件流。
Node.js文檔將指導您如何在Buffer
中使用字符串,只需查看上面的第二個鏈接即可。
爲ASCII將是一個字節數組:0x00 0x01
您需要的\u
和呼叫後提取Unicode代碼點parseInt
,然後從Number中提取字節。 JavaScript可能不是這方面最好的語言。
謝謝,我有點用Javascript和堅持使其工作。有沒有這樣的例子?我從來沒有真正處理過ASCII字符和任何幫助,不勝感激。 –
你想做什麼? –
我有一個連接到C++服務器的應用程序(在nodejs中),問題是當我將消息發送到服務器時,而不是正確的「SOH」ascii字符時,它顯示笑臉或unicode ('\ 0001'),這是不可接受的分隔符。我需要它是空白空間或任何它應該是的字符,並且對於C++應用程序是可讀的,謝謝! –
FWIW您可以使用[iconv-lite](https://github.com/ashtuchkin/iconv-lite)在瀏覽器的編碼(以及節點)之間進行轉換。 – mscdex
很高興知道!謝謝。 – pid
我正在做節點,但我從來沒有做過任何與ASCII字符。看起來不可能讓SOH ascii角色正確顯示。 –