lendo em utf 8-file (javascript XMLHttpRequest) dá maus caracteres europeus
-
06-07-2019 - |
Pergunta
alguém pode ajudar? Eu tenho pequeno procedimento para ler em um arquivo UTF-8 com JavaScript usando XMLHttpRequest .. este arquivo tem caracteres europeus como miércoles sábado etc .. Observe os acentos ..
Mas quando é lido nas .. os personagens são toda desarrumada .. Eu verifiquei o arquivo e é perfeito .. deve ser o procedimento para a leitura em ..
heres um exemplo, eu tenho arquivo que contém, o arquivo é perfeito, ele passa a ser javascript, mas isso não importa .. qualquer arquivo de codificação UTF-8 com caracteres especiais me dá o mesmo problema
this.weekDays = new Array ( "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo");
mas quando voltou e lido pelo procedimento a seguir é assim (note os personagens engraçados em sabado e miercoles)
this.weekDays = new Array ( "Lunes", "Martes", "Mia © rcoles", "Jueves", "Viernes", "Sábado", "Domingo");
Aqui está o meu processo - é muito pequena ...
var contentType = "application/x-www-form-urlencoded; charset=utf-8";
var request = new XMLHttpRequest();
request.open("GET", path, false);
request.setRequestHeader('Content-type', contentType)
if (request.overrideMimeType) request.overrideMimeType(contentType);
try { request.send(null); }
catch (e) { return null; }
if (request.status == 500 || request.status == 404 || request.status == 2 || (request.status == 0 && request.responseText == '')) return null;
//PROBLEM HERE is with european charcters that are read in
print(request.responseText);
return request.responseText;
Solução
Eu acho que você tem que usar uma maneira diferente para imprimir os caracteres, por exemplo, ver o código no final de esta discussão :
<script>
function getUnicode(num) {
num = num.toString(16);
if (num.length < 3) {
for ( var i = num.length; i < 4; i++) {
num = '0' + num;
}
}
return ( "&#" + num + ";" );
}
for ( var i = 0; i < 65355; i++) {
document.write(getUnicode(i));
}
</script>
Outras dicas
Provavelmente o seu arquivo não está em UTF-8, em seguida, tentar fazer isso a partir de javascript:
var request = new XMLHttpRequest();
request.open("GET", path, false);
request.overrideMimeType('text/xml; charset=iso-8859-1');
Eu estou tendo o mesmo problema e eu fixo desta forma.
Se você servir o arquivo js contendo os dias espanhol como UTF-8 eo caso não é salvo como UTF-8 que não vai funcionar.
Salve o arquivo em sua IDE como UTF-8 (ie. Padrão eclipse de arquivos js será CP1252) e também servir como codificação UTF-8 Char.
Se seu aplicativo é java, fazer um filtro com este código:
response.setCharacterEncoding("UTF-8");
tem uma boa
Eu também enfrentou o mesmo problema, eu ter resolvido desta maneira,
Enquanto Em Obter solicitação, estamos enviando dados através de url Então eu decodificado a url e se solicitado parâmetro através de operações de cadeia
Considere se você está enviando url como esta, var ur1 = "getSubjectList.jsp"; UR1 + = "? subjectlist =" + str + "& examId =" + examId;
xmlHttp.open ( "GET", UR1, true); xmlHttp.send (null);
Em getSubjectList.jsp, Use isto-- Corda decodedParams = URLDecoder.decode (request.getQueryString (), "utf-8");
string params [] = decodedParams.split ( "&");
String subjectlist[]=params[0].split("=");
String examId[] = params[1].split("=");
String center = subjectlist[1];
String exam = examId[1];
Desta forma, você pode obter os valores solicitados