2015-10-06 70 views
2

這是我的問題。如何替換EOT字符

我使用servlet從我的後臺系統導入數據並將數據保存到我的SQL Server。在數據中有EOT字符(傳輸結束)。

當我在SQL Server Management Studio中查看記錄我看到它像下面這個圖片:

enter image description here

當我複製/粘貼到記事本+ +我得到這個文本:

enter image description here

對我來說很清楚,在我的數據庫中我有EOT字符。

如何在我的前端替換此字符以顯示類似<br/>的內容?

我試過str.replace("\0","<br/>")提到here但沒有運氣。

有沒有人有線索?

+0

是對這個真的0十六進制值?記事本++在十六進制模式下顯示什麼?你有沒有嘗試過使用兩個或更多的反斜槓?請記住,由於多次轉義,您可能需要多達四個反斜槓。 – Marged

+1

ahhhh,我明白了....實際上應該使用'.replace(「\ 4」,「
」)',現在它可以工作,那就是ASCII十進制代碼fot EOT – MaVRoSCy

+0

關於NUL的後鏈接狀態,而不是EOT – Hacketo

回答

4

的答案是使用.replace("\4", "<br/>"),其中4\後EOT的十進制值的ASCII表

Oct Dec Hex Char      Oct Dec Hex Char 
    ------------------------------------------------------------------------ 
    000 0  00 NUL '\0'     100 64 40 @ 
    001 1  01 SOH (start of heading)  101 65 41 A 
    002 2  02 STX (start of text)   102 66 42 B 
    003 3  03 ETX (end of text)   103 67 43 C 
    004 4  04 EOT (end of transmission) 104 68 44 D 
    005 5  05 ENQ (enquiry)    105 69 45 E 
    006 6  06 ACK (acknowledge)   106 70 46 F 
    007 7  07 BEL '\a' (bell)    107 71 47 G 
    010 8  08 BS '\b' (backspace)  110 72 48 H 
    011 9  09 HT '\t' (horizontal tab) 111 73 49 I 
    012 10 0A LF '\n' (new line)   112 74 4A J 
    013 11 0B VT '\v' (vertical tab)  113 75 4B K 
    014 12 0C FF '\f' (form feed)  114 76 4C L 
    015 13 0D CR '\r' (carriage ret)  115 77 4D M 
    016 14 0E SO (shift out)    116 78 4E N 
    017 15 0F SI (shift in)    117 79 4F O 
    020 16 10 DLE (data link escape)  120 80 50 P 
1

我可以通過幾種方法來做到這一點。蠻力方法是創建一個方法來清理你得到的字符串;也許通過將字符串轉換爲您掃描的字符集合以刪除此字符以及您不想要的任何其他字符,並返回一個新的字符串。

沒有看,我認爲有那裏的圖書館可以用來消毒字符串。我假設Guava和Apache Java庫有以這種方式清理字符串的方法。

的疑難雜症是知道,如果當你可以把這個字符串基本上爲一系列字節,當你不能。我可能會達到一個十六進制編輯器,甚至POSIX od命令更難看清你正在消毒的數據的實際字節。