programing

jQuery AJAX 문자 인코딩

lastmoon 2023. 3. 23. 23:05
반응형

jQuery AJAX 문자 인코딩

나는 현재 프랑스 웹사이트를 코딩하고 있다.다른 날의 일정을 로드하기 위해 측면 링크를 사용할 수 있는 일정 페이지가 있습니다.

이를 위해 사용하는 JS는 다음과 같습니다.

    <script type="text/javascript">
    function load(y) {
        $.get(y,function(d) {
            $("#replace").html(d);
            mod();
        });
    }
    function mod() {
        $("#dates a").click(function() {
            y = $(this).attr("href");
            load(y);
            return false;
        });
    }
    mod();
    </script>

실제 AJAX는 마법처럼 작동합니다.나의 문제는 그 요청에 대한 응답에 있다.

프랑스 웹사이트이기 때문에 악센트가 있는 글자가 많습니다.ISO-8859-15 charset을 사용하고 있습니다.그러나 AJAX 요청에 대한 응답으로 문자 인코딩이 UTF-8로 다시 변경되는 것 같기 때문에 악센트가 ?가 되고 있습니다.

어떻게 하면 피할 수 있을까요?요청한 문서 상단에 PHP를 추가하여 문자 집합을 설정하려고 이미 시도했습니다.

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

하지만 그것 역시 효과가 없는 것 같다.무슨 생각 있어?

「 」 「 」 、 「 。되면 맨 되고 각 컬럼이 왜곡되는 입니까?<li>의 범위 내에서<td>음음음음음음음음음음음음음음음???

건배.

AJAX-call에서 콘텐츠 유형을 지정하면 노르웨이 사이트에서 문제가 해결되었습니다.

$.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'); ?>

UTF-8은 모든 억양과 외래 문자를 처리할 수 있도록 되어 있습니다.데이터 소스에 사용하는 것은 어떻습니까?

★★★★
[테스트 파일의 아카이브 복사]데이터와 함께

처음부터 모든 것이 UTF-8이어야 합니다.메모장++에 파일을 로드하여 utf-8로 변환하고 수동으로 문자를 악센트로 변경했습니다.한 번 하면 모든 게 잘 풀려요.

참고로 서버가 php-process .html 파일로 정의되지 않은 경우, ajax로 로드하는 파일은 iso charset을 얻을 수 없습니다.ISO charset을 사용해야 할 경우 html 파일 대신 php 파일을 요청하고 헤더에 charset을 정의합니다(파일 자체가 아님).

$str=iconv("windows-1250","UTF-8",$str);

내가 결국에 도움이 된 것은

ISO-8859-15 를 문자 인코딩으로서 사용하도록 서버를 설정할 필요가 있습니다(적절한 HTTP 헤더를 추가합니다).html 본문으로 하는 것은 도움이 되지 않습니다.

이 선이 보인다

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

를 참조해 주세요.이런 일은 일어나선 안 돼Live HTTP Headers를 사용해도 적절한 charset HTTP 헤더를 볼 수 없습니다.첫 페이지와 Ajax 서비스 모두에 사용합니다.

javascript excape() 메서드를 사용하는 것이 좋습니다.

jQuery에서는 다음과 같이 폼 값을 가져와 사용할 수 있습니다.

var encodedString = escape($("#myFormFieldID").val());

에서는 PHP get에 .$_POST.

예: (서버측)

if( strtoupper($_SERVER['REQUEST_METHOD']) == "POST" ){
$variable = htmlentities($_POST['variable']); // wrong
$variable = htmlentities( utf8_decode($_POST['variable']) ); // right
}

아바소스!!!(빠이빠이!!)

ajax 파일의 변수를 출력할 때.a를 넣다

htmlentities()

주변에선 효과가 있는지 봐아이슬란드 아약스 응용 프로그램에서 일했어요

스웨덴어/노르웨이어 문자가 물음표로 표시되는 데 문제가 있었습니다.

contentType: "application/json; charset=utf-8",

이 문제는 다음과 같이 추가함으로써 해결되었습니다.encodeURIComponent트링스

url: "/set_comment.do?text=" + encodeURIComponent(comment),

스페인어 포털의 콘텐츠 댓글 시스템에서 작업할 때도 비슷한 문제가 있었습니다.결국 몇 시간 동안 검색한 후, 무슨 일이 있어도 utf-8을 사용하는 것처럼 보이는 jQuery charset을 조작하는 대신, 문제를 해결한 것은 utf-8에서 PHP의 ISO-8859-1로 디코딩하는 것이었습니다.에는 PHP 에라는 기능이 .utf8_decode()로 제일 건 '아까 '아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아.

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

나서 나는 ((그리)를 했다)nl2br() ★★★★★★★★★★★★★★★★★」htmlentities()하기 위해 PHP가 합니다.)

행운과 평화를 기원합니다!세바

이 문제를 만지작거리다가 이 솔루션이 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');
        }
    }

만약 누군가가 이것이 효과가 없다는 것을 알게 되면 알려주세요.

제 페이지에서도 ASP와 비슷한 문제가 있었습니다.해결했습니다.

1) Jquery ajax 메서드에 의해 호출된 ASP 파일의 선두에 다음 명령을 삽입합니다.

Response.Charset = "windows-1252"

문자 집합이 정의되지 않았고 ANSI 인코딩으로 파일을 저장했습니다(텍스트 편집기를 메모장++로 사용).

2) jquery ajax 메서드로 ASP 파일을 호출하는html 파일에 다음과 같은 파라미터의 content-type을 삽입합니다.

$.ajax({         
data: parameters,         
type: "POST",         
url: ajax_url,
datatype: 'html',         
contentType: "text/html;charset=windows-1252",

간단히 말해 문자 집합이라고 하는 ASP 파일에서 정의하는 것이 중요합니다.이상하게도 jquery는 Windows-1252에서는 동작하지만 ISO-8859-1 문자 집합에서는 동작하지 않습니다.이 경우 jquery ajax 메서드는 예외를 줍니다.

독일어 특수문자(,,ö,ü)가 있는 텍스트 파일을 읽어보자는 제안을 많이 했습니다.결국:

 $.ajax({
        async:false,
        type: "GET",
        url: "data/FileName.txt",
        dataType: "text",
        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
        success: function (data) {
           alert(data);
        }
    });

특수문자를 읽겠습니다만, FileName을 명시적으로 저장한 후에만 읽습니다.UTF-8 형식의 txt.Windows Editor에서 텍스트 파일을 저장하는 표준 형식UTF-8이 아닌 ANSI입니다. 그러나 "이름 지어 저장"하여 저장 버튼 옆에 있는 드롭다운 상자를 사용하거나 더 나은 편집기를 사용하면 변경할 수 있습니다.

모든 것이 UTF-8이어야 한다는 데 동의하지 않습니다. ISO 8859와 완벽하게 작동하도록 만들 수 있습니다. 여기서 제 답변을 읽어주세요.

stackoverflow에서의 응답

<script type="text/javascript">
  function GetContent(idUser){ 
    $.ajaxSetup({
      url: 'ping.php'
    });

    $.ajax({
      type: "POST",
      url: "blablabla.php",
      dataType: "text",
      data: ({ParamUserID:idUser}),// here we def wich variabe is assiciated
      contentType: "application/x-www-form-urlencoded; charset=iso-8859-1",
      success: function(html) {
        $('#user_specified_content').html(html);
      }
    });     
  }
</script> 

이것은 내가 블래블라에서 내 콘텐츠를 얻는 대본이다.php 페이지.

성공에 대한 데이터를 받을 때 내 억양은 나타나지 않는다.

가져온 데이터에 액센트가 가미된 데이터를 가져올 수 있는 매우 효과적인 솔루션을 찾았습니다..success

내 블로그에.문제를 해결하기 위해 이렇게 했습니다.

용 i i i i를 쓴다.utf8_encode(place your data here)php php 、 에에요요 。이하에, 실제의 상황을 나타냅니다.

while( $row = sqlsrv_fetch_array($recordset) )
{                           
    <option value="<?php echo $row["xyz"]; ?>"><?php echo utf8_encode($row["gName"]) . ' | ' . utf8_encode($row["gManagerName"]); ?></option>                           
}

$.ajax를 사용하여 로컬 json/텍스트 파일을 읽어보려고 했지만 처음에는 인코딩이 되지 않았습니다.json 파일을 UTF-8 인코딩으로 저장하여 작동시켰습니다.이것은 Windows 메모장으로 간단하게 실행할 수 있습니다.「save as」를 사용해, 파일명아래에서 인코딩을 UTF-8 로 설정할 수 있습니다.

행운을 빕니다.

사용하고 있는 는, ISO-8859-1 의 을 모두 를 변경할 수 .encodeURIComponent타타에 escape.jquery 1.5.1로 대체됩니다).

'인코딩' 참조UIC 구성 요소 및 이스케이프 상세 정보

나는 같은 문제에 직면했고 여러 가지 방법을 시도했다.그리고 해결책을 찾았지다음과 같이 "Accept" 요청 헤더를 설정할 경우,

$.ajax({
        data: parameters,
        type: "POST",
        url: ajax_url,
        dataType: 'json',
        beforeSend : function(xhr) {
            xhr.setRequestHeader('Accept', "text/html; charset=utf-8");
        },
        success: callback
});

모든 문자가 올바른 것 같습니다.

나는 질문자와 정확히 같은 문제를 가지고 이 질문을 받았다.이 답변은 매우 유익하며, 저는 제안된 답변들을 거의 모두 시도해 보았습니다.하지만 여기 있는 답변 중 어느 것도 제게는 효과가 없었습니다. 제 문제에 약간의 차이가 있었을 수도 있습니다.그리고 그것은 많은 사람들에게 해당되는 것 같다.나는 답을 얻기 위해 많은 노력을 했다.

그래서 저는 이미 긴 답변 목록에 제 인코딩 문제를 해결한 저만의 해결책을 추가하고 있습니다.

난 딱 두 가지만 했어.데이터베이스 연결 스크립트에 추가한 내용은 다음과 같습니다.

mysql_set_charset('utf8',$connection);

그것과는 별개로:

  • 모든 파일의 인코딩을 UTF-8로 변경했습니다.

요점은 모든 것이 같은 인코딩이어야 한다는 것입니다.또한 새로운 php 파일을 작성할 때 스크립트의 인코딩을 변경하는 것만으로는 충분하지 않습니다.파일 자체가 올바르게 인코딩되어 있어야 합니다.

바뀌었습니다{"type":"GET"}로로 합니다.{"type":"POST"}ISO-8859-1

다음과 같은 페이지에 대해서도 같은 문제가 있었습니다.

  • 정상적으로 호출하면 정상적으로 표시된다.
  • Ajax 요청을 통해 호출할 때 특수 문자가 잘못 입력됨

를 사용하여) 문제를 하기 위해 (php)를 했습니다.utf8_encode() ★★★★★★★★★★★★★★★★★」htmlentities()소스 데이터에 있습니다.둘 다 효과가 있었고, 저는 그것들을 다른 프로젝트에 사용했습니다.

를 하고 있는 에, 다음의 코드를 컨트롤러에 하는 것으로 할 수 (CodeIgniter 가 것을 전제로 합니다).charset이치노아니면 그냥 넣어주세요.charset=whateveryouwant.

$this->output->set_header('Content-type: text/html; charset='.$this->config->item('charset'));

모든 컨트롤러의 슈퍼클래스인 MY_Controller의 컨스트럭터에 이 라인을 추가하여 어디서든 인코딩 문제가 발생하지 않도록 했습니다.

덧붙여서, 이것은 JSON의 반환(UTF-8로 부호화)에는 영향을 주지 않습니다.

저도 비슷한 문제가 있었어요.프랑스어 텍스트가 있는 json 데이터 텍스트 파일을 가지고 있습니다.일부 문자를 표시하는 데 항상 문제가 있었습니다.내 경우 JavaScript 프로그램은 다음과 같이 Ajax를 사용하여 json 텍스트 파일을 가져옵니다.

$.ajax({
    async: false,
    type: 'GET',
    url: 'some-url',
    success: function(data, status) {
        mainController.constructionStageMaster = data.records;
     }
});

반환된 데이터에는 항상 잘못된 악센트가 있는 프랑스어 문자가 포함되어 있었다.

json 텍스트는 다음과 같습니다.

{
    "records": [
        {
            "StageDesc": "Excavation, Fondation et Bases",
            "Allowed": 9,
            "Completed": 0,
            "TotalCompleted": ""
        },
        {
            "StageDesc": "Étanchement et Remblayage",
            "Allowed": 3,
            "Completed": 0,
            "TotalCompleted": ""
        },
        {
            "StageDesc": "Encadrement et revêtement mural intermédiaire",
            "StageDesc_fr": "Encadrement et revêtement mural intermédiaire np++",
            "StageDesc_fr2": "Encadrement et revêtement mural intermédiaire",
            "Allowed": 15,
            "Completed": 0,
            "TotalCompleted": ""
        }
        ...
    ]
}

의 세 에서는 올바른 에 '어느 정도인지', '어느 정도인지', '어느 정도인지', '어느 정도인지', '어느 정도인지', '어느 정도인지', '어느 정도인지', '어느 정도인지', '어느 정도인지'를 입력했습니다.éê프랑스 악센트가 있는 글자

에는 Eclipse, Eclipse를 사용한 글로벌 것 .ISO-8859-1이 다를 수 이 경우 인코딩이 다를 수 있습니다.

위의 솔루션을 확인하고 프로젝트를 진행하면 다음과 같이 문제를 해결할 수 있습니다.

  • 프랑스어 텍스트가 올바르게 표시된 텍스트의 소스를 찾습니다.
  • 텍스트 복사
  • Goto Eclipse, 데이터가 있는 텍스트 파일을 엽니다.
  • 을 열고 을 "찾아보다"로 합니다.ISO-8859-1
  • 텍스트가 올바르게 표시되도록 수정합니다.복사/붙여넣기 또는 키보드 사용
  • 키보드 화살표 키(왼쪽/오른쪽)를 사용하여 HTML에 재미있는 모양의 숨겨진 범죄 문자가 나타나지 않도록 해야 할 수도 있습니다.숨겨진 문자 삭제
  • 파일 저장

제 경우 Ajax 콜에 부호화 옵션을 지정하지 않았습니다만, 정상적으로 동작합니다.또한 텍스트 파일의 인코딩을 json 데이터로 변경해도 정상적으로 동작합니다.

타렉

jQuery는 기본적으로 UTF-8을 가정하고 이 기본값을 변경하려면 다음 작업을 수행합니다.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js">
</script>
<script>
  $.ajaxSettings.mimeType="*/*; charset=ISO-8859-15";// set you charset
</script>

이것으로 충분합니다! ;)

언급URL : https://stackoverflow.com/questions/553463/jquery-ajax-character-encoding

반응형