Quando um texto é copiado de programas como o MS Word e salvo no banco de dados, alguns caracteres poderão não ser exibidos quando convertidos para Unicode (ISO8889-1 ou UTF-8, por exemplo). Esse é o caso de Bullets (•) e En Dashes (–).
Apesar do charset CP1250/52 do Windows ser similar ao Unicode, ele
preservou alguns caracteres em suas posições originais, o que pode levar
a inconsistências em alguns casos.
Para converter esses caracteres para a codificação correta do unicode precisamos apenas da tabela de conversão, que pode ser acessada aqui, e to método replaceAll da classe String. Abaixo está o método de conversão para Bullets e En Dashes:
public final static String cp1252ToUnicode(String s) { s.replaceAll(String.valueOf((char) 149), "\u2022"); s.replaceAll(String.valueOf((char) 150), "\u2013"); return s; }
Fontes:
http://stackoverflow.com/questions/4000392/how-to-parse-word-created-special-chars-in-java
http://www.coderanch.com/how-to/java/WeirdWordCharacters
Nenhum comentário :