Firefox 3 e acentos

Pessoal,

Atualizei meu FF para a versão 3, e todas as palavras cadastradas no sistema com acentos ou com ç aparecem com ?. Deve ser algum problema de enconding, alguém ja passou por isso com essa versão do FF? Não achei a categoria ideal para postar, então deixo aqui mesmo.

Alberto

Tente mudar dentro desses três encodings: UTF-8, ISO8859-1, CP1251. A incompatibilidade pode estar no encoding padrão do firefox.

Até!

Na verdade, descobri aqui que o problema não é a exibição, é que quando posto o formulario, os caracteres já estão indo “?”, tentei setar o encode do jsp pela <%… mas não rolou não. Tem alguma idéia?

Alberto

[color=green]Olá.

Você utilizou a linha, como segue abaixo?[/color]

<%@ page contentType="text/html; charset=ISO-8859-1" %>

[color=green]Procure checar se a codificação do seu projeto é a mesma das demais páginas.

Experimente também colocar as seguintes linhas no arquivo web.xml[/color]

<init-param> <param-name>javaEncoding</param-name> <param-value>ISO-8859-1</param-value> </init-param>
[color=green]Espero que isso possa lhe ajudar. Até.[/color]

Na verdade, a documentação do FF e nos posts feitos veitos via Ajax, ele por default seta o charset do cabeçalho como UTF-8. Como uso o Dojo para fazer minhas requisições Ajax, preciso descobrir uma maneira de setar isso nele. http://developer.mozilla.org/en/docs/XMLHttpRequest Caso alguem saiba contornar este problema…

Alberto

Eu acho que é bug… Já mudei o encoding que deve ser enviado http.setRequestHeader("Content-Type",_24e.multipart?("multipart/form-data; boundary="+this.multipartBoundary):(_24e.contentType||"application/x-www-form-urlencoded; charset=iso-8859-1")); e o FF continua jogando UTF-8. Sei disso, pq instalei o firebug e vejo o cabeçalho da requisição, algem ja passou por isso?

Alberto

Alguém conseguiu resolver o problema citado?

Já rodei a internet inteira e nada,

se alguém souber…

abraços,

Evandro

Bom galera estava com um problema em um post via ajax com o FF 3 que estava truncado os acentos, depois de procurar mto e não encontrando fiz alguns testes e consegui uma solução.

Qdo eu lia meu form via javascript os campos que são string eu uso o escape para não dar problema no envio dos acentos,

No FF 3 eu tirei isto colocando no do do escape a função abaixo

function encodeCarac(string) {
	if (!((BrowserDetect.browser == "Firefox") && (BrowserDetect.version == "3"))) {
		string = escape(string);		
	}
	return string;
}

O código do objeto Browser


var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

Bom espero que dê pra ajudar mais alguem, este testei no IE7, FF2 e FF3 e funcionou perfeitamente :slight_smile:

abraço a todos,

Evandro

Estou passando por esse mesmo problema mas não consegui utilizar essa função. onde devo chama-la? oque devo passar no string? o id do textarea e o value do textarea?

Vlw

E aí vinicius tudo bom?

Cara alterei a função para pegar o firefox maior ou igual a tres

function encodeCarac(string) {
	if (!((BrowserDetect.browser == "Firefox") && (BrowserDetect.version >= "3"))) {
		string = escape(string);		
	}
	return string;
}

Eu utilizo para fazer as chamadas em ajax, não sei se vc usa ajax, mas vou mandar um exemplo

var sData = document.getElementById("meuinput").value;
	
var sDataCarac = encodeCarac(sData);

Não sei se vai lhe servir, mas acho que sim, hehe

Se for via ajax, não esqueça de setar o encode type

xmlhttp1.open("POST","./CadastroAtualizaCoobrigado",true);
	xmlhttp1.setRequestHeader("Cache-Control","no-store, no-cache, must-revalidate");
	xmlhttp1.setRequestHeader("Cache-Control","post-check=0, pre-check=0");
	xmlhttp1.setRequestHeader("Pragma", "no-cache");
	xmlhttp1.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
	xmlhttp1.setRequestHeader('Content-length', strData.length);

abs,

Evandro