2012-05-09 2 views
0

Я создал приложение Java, которое анализирует текстовый файл для извлечения полей, которые загружаются в таблицу данных. Мы обнаруживаем некоторую обработку исключения, когда таблица не может принимать специальные символы, в частности Â и тому подобное.Рекомендации по стратегии для удаления специальных символов в java

Эти символы появляются во входном файле как пробелы, когда я смотрю на него, но Java интерпретирует их по-разному. Я подозреваю, что это код символа, который интерпретируется по-разному.

Мой вопрос заключается в следующем: чтобы отфильтровать эти символы, можно ли каким-либо образом создать список того, что видит Java? Я собираюсь напечатать CHAR и код символа, и, если возможно, символ ~ set ~ (ASCII, ANSI, UTF-8 и т. Д.). Из этого я мог бы заменить пространство для символа в моем конечном файле и решить мою проблему.

Есть ли более простое решение, которое я не вижу?

+1

Правильное решение - позволить вашей базе данных обрабатывать такие символы. – Jayan

+1

Не фильтруйте специальные символы. Держите их и научитесь правильно обрабатывать кодировки символов, в конце концов. – artbristol

+1

Вы уверены, что правильно прочитали данные UTF-8? –

ответ

1

Звучит так, будто вы пересекаете наборы символов, или ваши входные файлы имеют в нем некоторую последовательность символов управления. Вы должны сосредоточить свои усилия на этой стороне и убедиться, что вы работаете в правильном наборе символов. Единственный способ, с помощью которого я могу составить список символов в файле, - это массив и цикл файла.

Если вы действительно хотите, чтобы лишить все эти вещи, проверьте эту нить

Regular expression for excluding special characters

объясняет, как белый и черный список символов с регулярным выражением.

+0

Мне дали файлы, не имеющие представления о наборе символов. Согласился, что было бы лучше разрешить спецификации символов, но с учетом того, с чем мне нужно работать. Я планировал массив (хотя мои байты строятся поочередно, так как я уже разбираю мои данные) , но ссылка невероятно полезна для информации о том, как закодировать фильтр. Мне очень нравится идея белого списка, а не черного списка. Благодаря! – dwwilson66

1

Попробуйте расшифровать, UTF8?

public static byte[] stringToByteArray(String s) 
    throws UnsupportedEncodingException { 
    return s.getBytes("UTF-8"); 
} 

Или какой-то другой, как «ISO-8859-1» и преобразовать ByteArray в строку и попытаться напечатать его?

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