Вопрос по encoding, javascript, utf-8, xmlhttprequest – чтение в файле utf-8 (javascript XMLHttpRequest) дает плохие европейские символы
кто-нибудь может помочь? У меня есть небольшая процедура для чтения в файле UTF-8 с использованием javascript с использованием XMLHttpRequest ... этот файл содержит европейские символы, такие как mi & # xE9; rcoles s & # xE1; bado и т. Д. Обратите внимание на акценты ..
Но при чтении в ... все символы перепутаны .. Я проверил файл, и он идеально подходит ... это должна быть процедура для чтения в ..
Вот пример, который у меня есть файл, который содержит, файл идеально подходит, это javascript, но это не имеет значения ... любой файл кодировки UTF-8 со специальными символами дает мне ту же проблему
this.weekDays = new Array ("Lunes", "Martes", "Mi" # & quot; rcoles "," Jueves "," Viernes "," S & # xE1; bado "& quot; quot; quot; ;
но когда вы вернетесь и прочитаете описанную ниже процедуру, это будет так (обратите внимание на забавных персонажей в сабадо и мирколе)
this.weekDays = new Array ("Lunes", "Martes", "Mi" # MiC #; & # xA9; rcoles "," Jueves "," Viernes "," S "# XC3; & xA; x bado "," Domingo ");
Вот моя процедура - это очень мало ...
<code>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; </code>
В то время как в запросе Get, мы отправляем данные через URL Так что я расшифровал URL-адрес и получил запрошенный параметр через строковые операции
Подумайте, отправляете ли вы URL как этот var ur1 = & quot; getSubjectList.jsp & quot ;; ur1 + = & quot;? subjectlist = & quot; + СИЛ + & Quot; & амп; examId = & Quot; + examId;
xmlHttp.open (& quot; GET & quot ;, ur1, true); xmlHttp.send (нуль);
В getSubjectList.jsp, используйте это-- String decodedParams = URLDecoder.decode (request.getQueryString (), & quot; utf-8 & quot;);
String params [] = decodedParams.split (& amp; & quot;);
String subjectlist[]=params[0].split("=");
String examId[] = params[1].split("=");
String center = subjectlist[1];
String exam = examId[1];
Таким образом, вы можете получить запрошенные значения
что вы должны использовать другой способ печати символов, например, увидеть код в концеэто обсуждение:
<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>
Если вы используете файл js, содержащий испанские дни, как UTF-8, а if НЕ сохраняется как UTF-8, он НЕ БУДЕТ работать.
Сохраните файл в вашей среде IDE как UTF-8 (т. Е. По умолчанию eclipse для js-файлов будет cp1252), а также используйте его как кодировку символов UTF-8.
Если ваше приложение Java, сделайте фильтр с этим кодом:
response.setCharacterEncoding("UTF-8");
хорошего