чтение в файле utf-8 (javascript XMLHttpRequest) дает плохие европейские символы

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

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

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

this.weekDays = новый массив («Люнес», «Мартес», «Мирколес», «Ювес», «Вьернес», «Сабадо», «Доминго»);

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

this.weekDays = новый массив («Лунес», «Мартес», «Микколес», «Ювес», «Вьернес», «Сабадо», «Доминго»);

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

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;

person mark smith    schedule 20.06.2009    source источник
comment
вы уверены, что файл в кодировке UTF-8? Вы настроили свой текстовый редактор так, чтобы он явно сохранял его с этой кодировкой? Установка запроса в UTF-8 не имеет значения, действительно ли ответ в UTF-8 и соответствующий заголовок установлен в ответе?   -  person jitter    schedule 20.06.2009
comment
Это устарело, но для тех, кто сталкивается с этим, используйте метод .overrideMimeType ('text / plain; charset = utf8'); объекта xmlhttprequest от разработчика MDN с использованием XMLHttpRequest   -  person Nikos M.    schedule 11.02.2015


Ответы (4)


РЕДАКТИРОВАТЬ: кажется, что этот ответ, хотя и принят, неоптимален, поэтому для тех, кто приходит сюда с аналогичной проблемой, ознакомьтесь с ответом Рикардо

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

<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>
person schnaader    schedule 20.06.2009

Вероятно, ваш файл не в UTF-8, попробуйте это с помощью javascript:

var request = new XMLHttpRequest();
request.open("GET", path, false);
request.overrideMimeType('text/xml; charset=iso-8859-1');
person Ricardo    schedule 15.02.2014
comment
Я уверен, что мой файл закодирован в UTF-8, но сервер не вернул этот заголовок кодировки, поэтому проблема была решена. - person Dinei; 15.05.2018
comment
@Dinei, если этот фрагмент работает для вас, это означает, что ваш вывод не в UTF8. Некоторые поставщики серверов могут изменить ваш вывод. Предлагаю попробовать в почтальоне и проверить заголовки. - person Ricardo; 16.05.2018
comment
У меня есть файл .json в кодировке UTF-8, но по какой-то причине он обслуживается с заголовком Content-type: text/plain; charset=ISO-8859-1. Использование overrideMimeType с charset=UTF-8 решило мою проблему. - person Dinei; 16.05.2018

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

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

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

Если ваше приложение является java, сделайте фильтр с помощью этого кода:

response.setCharacterEncoding("UTF-8");

хорошего тебе

person Rodrigo Asensio    schedule 19.10.2009

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

Пока в запросе Get мы отправляем данные через URL-адрес, поэтому я декодировал URL-адрес и получил запрошенный параметр с помощью строковых операций.

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

xmlHttp.open ("ПОЛУЧИТЬ", ur1, истина); 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];

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

person Sweety Wagh    schedule 01.04.2016
comment
Извините, но этот вопрос касается javascript, а не java. - person Jack Giffin; 23.05.2018