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

StackOverflow https://stackoverflow.com/questions/1021086

Вопрос

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

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

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

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

но когда его возвращают и читают с помощью приведенной ниже процедуры, это выглядит следующим образом (обратите внимание на забавных персонажей в 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;
Это было полезно?

Решение

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

<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>

Другие советы

Вероятно, ваш файл не в UTF-8, тогда попробуйте это из javascript:

var request = new XMLHttpRequest();
request.open("GET", path, false);
request.overrideMimeType('text/xml; charset=iso-8859-1');

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

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

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

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

response.setCharacterEncoding("UTF-8");

удачного вам дня

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

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

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

xmlHttp.open("ПОЛУЧИТЬ", ur1, true);xmlHttp.отправить(null);

В getSubjectList.jsp используйте следующее-- Строка decodedParams= URLDecoder.decode(запрос.getQueryString(),"utf-8");

Строковые параметры[]=decodedParams.split("&");

     String subjectlist[]=params[0].split("=");
     String examId[] = params[1].split("=");
     String center = subjectlist[1];
    String exam = examId[1];

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top