Кодировка символов Ajax jQuery

Я думаю, что вы действительно хотите это:

>>> re.findall('\d+', sntc)
['5678', '123', '345', '2345']

У вашего regex есть небольшая проблема, и может закончиться так:

>>> re.split('\D*', sntc)
['', '', '5', '6', '7', '8', '', '1', '2', '3', '', '3', '4', '5', '', '2', '3', '4', '5', '', '']

Я думаю, что вы намеревались сделать является:

>>> re.split('\D+', sntc)
['', '5678', '123', '345', '2345', '']

Тем не менее, это то, что split о, он расщепляет вещи, даже если он оставляет nothing.
Рассмотрим CSV или TAB разделенных xls файлов.
Это разработано так. - Даже если между запятыми или табуляцией нет ничего, эти столбцы все еще существуют - пустые столбцы.

И \D+ здесь, он работает как comma или TAB, он будет действовать как разделитель столбцов, независимо от того, есть ли у вас что-то перед ним или нет, он будет обозначать новый [ 1112] после него.
То же самое для последнего \D+ сопоставленного содержимого, независимо от того, следите за ним или нет, оно все равно обозначает новый column после него.

57
задан Walery Strauch 12 February 2014 в 10:42
поделиться

10 ответов

UTF-8, как предполагается, обрабатывает все диакритические знаки и внешние символы - почему бы не использовать его на Вашем источнике данных?

РЕДАКТИРОВАНИЕ
[ Архивная копия тестового файла. ] с Вашими данными

Все должно быть UTF-8 во-первых. Я загрузил файлы в блокноте ++, преобразованный в utf-8 и вручную изменился, charactes к диакритическим знакам были необходимы. После того, как сделанный все работает как очарование.

BTW, если Ваш сервер не определяется для php-обрабатывания .html файлов, файлы, которые Вы загружаете ajax, не получают Ваш набор символов ISO. Если Вы настаиваете на том, чтобы использовать набор символов ISO, запрашиваете php файл вместо файла HTML и определяете набор символов в заголовке (не в самом файле)

23
ответ дан Divyesh Kanzariya 24 November 2019 в 19:22
поделиться

IВґve имел ту же проблему со страницами что:

  • Обнаруживаются прекрасный при нормальном вызове
  • Испортили специальные символы при вызове через запрос ajax

Для решения проблемы (использующий php), я использовал utf8_encode() или htmlentities() на исходных данных. Оба работали, я использовал их в различных проектах.

0
ответ дан blasteralfred Ψ 24 November 2019 в 19:22
поделиться

При распечатывании переменных в ajax файле. Поместите

htmlentities()

Вокруг них, посмотрите, работает ли это. Работавший для меня в исландском ajax приложении.

6
ответ дан Ólafur Waage 24 November 2019 в 19:22
поделиться

Необходимо настроить сервер для использования ISO-8859-15 в качестве кодировки символов (добавляющий соответствующий HTTP-заголовок). Выполнение его в теле HTML не поможет.

я вижу эту строку

<?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>

в источнике Вашего HTML. Этого не должно происходить. Используя Живые HTTP-заголовки я не вижу соответствующего HTTP-заголовка набора символов. Используйте это и для Вашей первой страницы и для ajax сервиса.

10
ответ дан kgiannakakis 24 November 2019 в 19:22
поделиться

Определение типа контента на вызове AJAX решило мои проблемы на норвежском сайте.

$.ajax({
        data: parameters,
        type: "POST",
        url: ajax_url,
        timeout: 20000,
        contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
        dataType: 'json',
        success: callback
});

необходимо было бы также указать набор символов на сервере.

<?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>
63
ответ дан Magnar 24 November 2019 в 19:22
поделиться

Я НЕ СОГЛАСЕН, все должно быть в кодировке UTF-8, вы можете заставить его отлично работать с ISO 8859, я это сделал, пожалуйста, прочтите мой ответ здесь.

мой ответ в stackoverflow

1
ответ дан 24 November 2019 в 19:22
поделиться
$str=iconv("windows-1250","UTF-8",$str);

Что помогло мне в конце концов

19
ответ дан 24 November 2019 в 19:22
поделиться

Я бы настоятельно рекомендовал использовать метод javascript escape()

Вы можете использовать его с jQuery, захватив значение формы следующим образом:

var encodedString = escape($("#myFormFieldID").val());
7
ответ дан 24 November 2019 в 19:22
поделиться

У меня были похожие проблемы, когда я работал в системе комментариев к контенту на нашем испанском портале. Что, наконец, решило мою проблему, после многих часов поиска, вместо того, чтобы возиться с кодировкой jQuery, которая, похоже, использует utf-8, несмотря ни на что, это было декодирование из utf-8 обратно в ISO-8859-1 в обработанном PHP сообщение ajax POST. В PHP есть встроенная функция utf8_decode () , поэтому первое, что я делаю со строкой комментариев, это:

$comentario = utf8_decode($_POST['comentario']);

(а затем я использовал nl2br () и htmlentities () Функции PHP для подготовки текста к сохранению с использованием html-сущностей вместо специальных символов)

Всем удачи и мира! Себа

4
ответ дан 24 November 2019 в 19:22
поделиться

Я возился с этой проблемой и обнаружил, что это решение работает для Firefox и safari (да, сейчас я на mac).

при получении запроса я сделал content-type=iso-8859-1 здесь:

if (window.XMLHttpRequest) { // Mozilla, Safari, ...
  httpRequest = new XMLHttpRequest();
        if (httpRequest.overrideMimeType) {
            httpRequest.overrideMimeType('text/xml; charset=ISO-8859-1');
        }
    }

Пожалуйста, скажите мне, если кто-то обнаружит, что это не работает в ie.

3
ответ дан 24 November 2019 в 19:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: