2012-04-13 6 views
0

У нас есть люди, отправляющие непечатаемые типы символов x86 в массив байтов в Java, и когда мы преобразуем его в строку usii-ascii, он вставляет символ нежелательной почты в текст acsii.Как обрабатывать ascii непечатаемые символы в java

Есть ли формат для строки/другого способа обработки непечатаемых символов ascii при преобразовании данных из форматов, таких как EBCDIC в ASCII в java?

Заранее спасибо, JJ

+0

Строки в Java - UTF-16. Как вы выполняете преобразование из массива байтов в строку? Вы просто делаете: 'new String (byteArray,« US-ASCII »);« Возможно, это может помочь: http://stackoverflow.com/a/5536013/355499 –

+1

Если они действительно байты EBCDIC, Java поддерживает [три EBCDIC encodings] (http://docs.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html): IBM500/Cp500, x-IBM834/Cp834 и IBM1047/Cp1047; вы можете использовать один из них для преобразования байтов EBCDIC в строку US-ASCII, как это было предложено @EmilH. Неродственное решение, вы можете преобразовать символы EBCDIC в эквивалент Unicode, как показано на http://effbot.org/zone/unicode-gremlins.htm – ecle

ответ

1

Как бы вы хотели, чтобы справиться с ними? Замените их чем-нибудь пригодным для печати (например,??)? Удалить их полностью? Некоторые другие действия?

0

Если вы находитесь в США или "Западной Европе" (Великобритания, Франция, Германия), набор символов, вероятно, Windows-1252. Однобайтовая кодировка US-ASCII охватывает 128 символов, однобайтовая кодировка Windwos-1252 - это надмножество, охватывающее все 255 символов в байтовом диапазоне.

Самый простой - это таблица переводов для \ u008 - \ u00ff. String, так как некоторые могут быть лучше заменены несколькими символами, например `OE '.

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