Problema com Acentuação

estou com problema na acentuação quando o meu dispositívo móvel recebe um xml enviado pelo servidor

o problema realmente ocorreu quando mudamos o servidor que usava Windows Xp para um servidor Debian.

O dispositívo móvel que estou usando é um HTC S621 que roda Windows Mobile 5

até onde vih o problema é que em sistemas windows a formatação do texto se da usando o padrão ISO … mas no Debian é UFT …

alguns detalhes … a comunicação mobile - server é feita via servlet
alguém já passou por algo assim?

Sem olhar o código fica dificil.

Em tese o seu sistema envia um XML, logo vc tem que ver pq o seu sistema envia XML com o encoding diferente do esperado.

Ele tira os dados do xml daonde? de um banco de dados? são hard-coded? Tem q procurar a origem do erro e corrigir, ou forçar que a saida seja no encoding que vc quer.

São muitas variaves pra investigar, alguma coisa pode ter acontecido na migração do windows para o Debian. E o conjunto de caracteres padrão do Debian pode ser alterado :wink:

Nesse caso, tu tem 2 opções:

primeira: Definir o teu XML como UTF-8, no servidor.

Segunda: Passar como parâmetro para a tua máquina virtual no dispositivo, o encoding ISO-8859-1. -Dfile.encoding=ISO-8859-1

Fernando Rosa

Padrão Debian não pode ser alterado nesse caso … a máquina não é minha …

Os dados ele pega de um banco de dados … mais especificamente SQL Server … onde o banco de dados está num servidor Windows XP

[code]protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
String msg = null;
DataOutputStream out = null;
DataInputStream in = null;
//String type = new String(“ISO-8859-1”);
//String type = new String(“UTF-8”);
try {
// define o formato de resposta, que deixa o fluxo mais rapido
response.setContentType(“application/octetc-stream”);
//response.setContentType(“text/plain;charset=UTF-8”);
//response.setCharacterEncoding(“ISO-8859-1”);
//response.setCharacterEncoding(“UTF-8”);
//request.setCharacterEncoding(“UTF-8”);
out = new DataOutputStream(response.getOutputStream());
in = new DataInputStream(request.getInputStream());

		if(request.getParameter("pes")!=null){ // envia pesquisa
			log.info("Mobile request xml");
			Document docXML = MobileXml.buildXML();
			out.write(convertToSendMobile(new XMLOutputter().outputString(docXML)));
			msg = new String("Send to mobile xml");
			log.info(msg);
			return;
		}
		
	} catch (IOException ioe) {
		if(msg!=null) log.error(msg);
	} finally {
		if (out != null) {
			try {
				out.close();
			} catch (IOException ioe) {
				ioe.printStackTrace();
			}
		}
		if (in != null) {
			try {
				in.close();
			} catch (IOException ioe) {
				ioe.printStackTrace();
			}
		}
	}
}

[/code]

private static byte[] convertToSendMobile(String text) { return text.getBytes(); }

Já tive problemas com encoding usando HTC, mas programando com Compact .NET Framework. Ele não suporta UTF-8. A única solução foi fazer com que o servidor enviasse em ISO-8859-1 mesmo. No caso, você disse que não tem acesso ao server, então a coisa complica :slight_smile:

Calma lá… vc disse que não tem acesso ao server físico ou à aplicação server-side?

Você pode alterar a aplicação server-side?

eu não posso alterar as configurações do sistema operacional do servidor …
o servlet que envia esses dados para o mobile eu posso alterar …

sugestão???

[quote=Fernando Generoso da Rosa]Nesse caso, tu tem 2 opções:

primeira: Definir o teu XML como UTF-8, no servidor.

Segunda: Passar como parâmetro para a tua máquina virtual no dispositivo, o encoding ISO-8859-1. -Dfile.encoding=ISO-8859-1

Fernando Rosa[/quote]

essa solução foi adotada … mas agora o erro se da assim
O jo?o est? em condi??es de uso?

… repare que está trocando os caracteres especiais por ?

foi trocado tbm o enconding do sistema setando o locale pra pt_BR.ISO8859-1

dpkg-reconfigure locales e /etc/environment