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와 완벽하게 작동하도록 만들 수 있습니다. 여기서 제 답변을 읽어주세요.
<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
'programing' 카테고리의 다른 글
JObject를 사용하여 JSON을 즉시 생성 (0) | 2023.03.23 |
---|---|
테이블을 변경하여 열의 기본값을 수정합니다. (0) | 2023.03.23 |
get_the_id와 post->ID 대 the_id / get_post_meta (0) | 2023.03.23 |
Python을 사용하여 JSON을 요청하고 처리하는 방법은 무엇입니까? (0) | 2023.03.23 |
루트 파라미터가 변경되어도 컴포넌트가 재마운트되지 않는다. (0) | 2023.03.23 |