2015-10-06 7 views
2

Это моя проблема.Как заменить символ EOT

Я импортирую данные из своей бэк-офисной системы с помощью сервлета и сохраняю данные на своем SQL Server. В данных есть символ EOT (конец передачи).

Когда я просмотреть запись в моей SQL студии управления сервера я вижу это как ниже этого изображения:

enter image description here

Когда я копировать/вставить текст в Notepad ++ я получаю это:

enter image description here

Его ясный для меня, что в моем db у меня есть символ EOT.

Как я могу заменить этого персонажа в своем интерфейсе, чтобы показать что-то вроде <br/>?

Я попробовал str.replace("\0","<br/>"), упомянутый here, но не повезло.

У кого-нибудь есть ключ?

+0

ли шестнадцатеричное значение для этого действительно 0? Что делает Notepad ++ в шестнадцатеричном режиме? Вы пытались использовать две или даже более обратную косую черту? Помните, что вам может потребоваться до четырех обратных косых черт из-за множественного экранирования. – Marged

+1

ahhhh, я получил его ... на самом деле должен использовать '.replace (" \ 4 ","
")', теперь он работает, это ASCII десятичный код fot EOT – MaVRoSCy

+0

состояние, связанное с сообщением о NUL, а не EOT – Hacketo

ответ

4

Ответ заключается в использовании .replace("\4", "<br/>"), где 4 после \ является десятичное значение СРВ в таблице 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

Есть несколько способов, как я могу это сделать. Метод грубой силы должен был создать метод, который санирует строку, которую вы получили; возможно, превратив String в коллекцию символов, которые вы сканируете, чтобы удалить это и любые другие символы, которые вы не хотите, и вернуть новую строку.

Не смотря, я предполагаю, что есть библиотеки, которые можно использовать для дезинфекции строк. Я предполагаю, что Guava и Java-библиотеки Apache имеют методы, которые могут таким образом дезинформировать Strings.

Улыбка знает, если и когда вы можете лечить эту строку , по существу, в виде серии байтов и когда вы не можете. Я, вероятно, доберусь до шестнадцатеричного редактора или даже команды POSIX od, чтобы больше смотреть на фактические байты данных, которые вы дезинфицируете.

Смежные вопросы