чтение в файле utf-8 (javascript XMLHttpRequest) дает плохие европейские символы - PullRequest
8 голосов
/ 20 июня 2009

кто-нибудь может помочь? У меня есть небольшая процедура для чтения в файле UTF-8 с использованием javascript с использованием XMLHttpRequest. Этот файл содержит европейские символы, такие как miércoles sábado и т. Д. Обратите внимание на акценты ..

Но при чтении в ... все символы перепутаны .. Я проверил файл, и он идеально подходит ... это должна быть процедура для чтения в ..

вот пример, который у меня есть файл, который содержит, файл идеально подходит, это javascript, но это не имеет значения ... любой файл кодировки UTF-8 со специальными символами дает мне ту же проблему

this.weekDays = new Array ("Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo");

но при возврате и прочтении по приведенной ниже процедуре это выглядит так (обратите внимание на забавных персонажей в сабадо и мирколе)

this.weekDays = new Array ("Lunes", "Martes", "Miórcoles", "Jueves", "Viernes", "Sábado", "Domingo");

Вот моя процедура - она ​​очень маленькая ...

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;

Ответы [ 4 ]

21 голосов
/ 15 февраля 2014

Возможно, ваш файл не в UTF-8, попробуйте это из JavaScript:

var request = new XMLHttpRequest();
request.open("GET", path, false);
request.overrideMimeType('text/xml; charset=iso-8859-1');
1 голос
/ 19 октября 2009

У меня та же проблема, и я исправил ее таким образом.

Если вы используете файл js, содержащий испанские дни, как UTF-8, а if НЕ сохраняется как UTF-8, он НЕ БУДЕТ работать.

Сохраните файл в вашей IDE как UTF-8 (т. Е. По умолчанию eclipse для js-файлов будет cp1252), а также используйте его как кодировку UTF-8.

Если ваше приложение - Java, сделайте фильтр с этим кодом:

response.setCharacterEncoding("UTF-8");

удачного

1 голос
/ 20 июня 2009

Я думаю, что вы должны использовать другой способ печати символов, например, см. Код в конце этого обсуждения :

<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>
0 голосов
/ 01 апреля 2016

Я тоже столкнулся с той же проблемой, которую я решил таким образом,

При получении запроса мы отправляем данные через URL Поэтому я расшифровал URL-адрес и получил запрошенный параметр через строковые операции

Подумайте, отправляете ли вы URL-адрес вот так, var ur1 = "getSubjectList.jsp"; ur1 + = "? subjectlist =" + str + "& examId =" + examId;

xmlHttp.open ("GET", ur1, true); xmlHttp.send (нуль);

В getSubjectList.jsp, используйте это-- String 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];

Таким образом, вы можете получить запрошенные значения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...