2014-07-23 2 views
3

여기 2가지 경우가 있습니다ASCII 문자가 아닌 문자가 이상한 기호로 표시되는 이유는 무엇입니까?

내 데이터베이스 내가 페이지로 가져 오기 할 정보를 많이 포함을, 이러한 정보 중 일부는 Uwe Rülke

같은 비 ASCII 문자가 포함 이름이다 - 올드 솔루션을하는 잘 작동합니다 :

DB에서 데이터를 가져 와서 VBwhile 루프에서 직접 데이터를 채 웁니다. 이 경우 모든 문자가 올바르게 Uwe Rülke

표시된다 - 제대로 작동하지 않는 새로운 솔루션 :

비주얼 베이직의 While 루프 (오히려 JS 문자열에, 페이지로 직접 데이터를 던져하지 않습니다 지금 DB를 각각 호출하지 않음으로써 성능 향상). 하지만 JS 변수에 저장된 정보를 사용할 때 다음과 같은 내용이 있습니다 : Uwe R�lke. 페이지의 인코딩이 두 경우 모두

:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 


내가 잘못 않았다 ?

편집

이는 JS 문자열로 저장 (DB에서) 가져 오기하는 데 사용되는 코드입니다.

ISEquery 페이지에서 AJAX LOAD을 사용하여 특정 요청을 작성하고 DB에서 쿼리합니다. 데이터를 excel 파일이나 HTML 파일로 가져 오는 데 사용됩니다. 이 시점에서 문자는 잘 표현됩니다.

가 그런 마법이 발생하고 문자가 잘못 표현 된 얻을, 나는 exctractFields 기능에 체크

$("<div></div>").load("ISEquery.asp?isExcel=0&" + info, function(){ 
          // Extracting the fields into an array 
          var rows = ""; 
          var options = ""; 
          $(this).children().each(function(index){ 
           var fieldsArray = exctractFields($(this).html()); 
           rows += createISELine(fieldsArray); 
           options += createISELine_ComboBox(fieldsArray); 
          }); 
         }); 
+2

AFAIK, Javascript는 UTF-8을 사용하므로 잘못된 코딩입니다. UTF-8에서 페이지를 출력해야합니다. – Kroltan

+0

@Kroltan, nope가 작동하지 않았습니다! 나는 여러 음원과 같은 결과 사이에서 그것을 바 꾸었습니다. – user2517028

+0

브라우저로 데이터를 전송하는 데 사용하는 코드를 표시하십시오. –

답변

2

덕분에 Aaron Digulla의 answer은 서버의 문자열을 따라 페이지로 이동하여 AJAX LOAD 이후에 잘못 표시되어이 문제가 해결 된 answer을 발견했습니다. charset="UTF-8"보다는 작동하려면 charset="iso-8859-1"을 사용해야했지만.

그래서 최종 대답은 : 아약스 데이터를 -encoding

<meta http-equiv="Content-Type" content="text/html"; charset="iso-8859-1"> 

:

$.ajaxSetup({ 
      'beforeSend' : function(xhr) { 
      xhr.overrideMimeType('text/html; charset=iso-8859-1'); 
     }, 
    }); 

를 이제 문자가 올바르게 표시됩니다

는 HTML 페이지에 -encoding. 도움 사람을위한 고맙습니다.

+0

이것은 iso-8859-1 인코딩을 사용하여 항상 데이터를 반환하도록 서버를 구성했음을 나타냅니다. 이것은 (서구) 유럽의 사람들 만 사용하는 한 계속 작동합니다. 대신에 'UTF-8'을 사용하는 것을 고려해야합니다. –

-2
문자열에 대한

자바 스크립트의 기본 인코딩은 UTF-16 (16 비트) 동안 인 ISO-8859- 1은 8 비트입니다.

Default Javascript Character Encoding?

난 당신이 ASCII 문자로 특수 문자를 변환 할 encodeURI()을 사용할 수 있으며 이후에 당신은 당신이 문자를 사용한다는 것을 의미 decodeURI()

http://www.w3schools.com/jsref/jsref_encodeuri.asp

+2

-1 기본 JavaScript 소스 파일 인코딩은 UTF-8입니다. 16 비트 문자 값은 JS 문자열을 메모리에 작성하는 데 사용됩니다. 이는 소스 코드 인코딩과 아무 관련이 없습니다. –

+0

@AaronDigulla 나는 문자열을 의미했습니다. 내 잘못. 문자열에 대한 인코딩을 설명하는 질문에 대한 링크를 포함 시켰습니다. – GCallie

+0

이 경우 대답은 도움이되지 않습니다. 문제는 VB 스크립트와 클라이언트 사이의 올바른 인코딩을 사용하지 않는다는 것입니다. –

5

으로 디코딩 할 수 있다고 생각하는 수 제대로 표현 될 수 없다.

서버와 클라이언트 사이의 임의의 위치에서 문자열 데이터를 올바르게 인코딩해야합니다. 어떻게 서버에서 클라이언트로 데이터를 전송하는지 (JavaScript, AJAX, GET 요청을 생성하는지) 모르겠다. 문제를 해결하는 방법을 말하는 것이 어렵다.

하지만해야 할 일 : 모든 단계마다 데이터의 현재 인코딩이 무엇이고받는 사람이 예상하는 내용을 알고 있어야합니다.

예를 들어 HTML 페이지에서 인라인 JavaScript를 생성하는 경우 문자열 값은 페이지 (iso-8859-1)와 동일한 인코딩으로 인코딩되어야합니다. AJAX를 사용하는 경우 일반적으로 UTF-8을 사용해야합니다.

+0

감사합니다, 유용한 답변이지만, 아직 내 문제를 해결하지 못했습니다. 코드의 평화로운 질문으로 업데이트합니다. 이제 더 유익 할 것입니다. – user2517028

+1

AJAX에서는 ISO-8859-1 (Latin1)을 문제없이 사용할 수 있습니다. UTF-8을 사용할 필요가 없습니다. UTF에는 라틴 문자보다 많은 문자가 포함되어 있기 때문에 웹 페이지/응용 프로그램의 경우 UTF-8/UTF-16을 사용하는 것이 좋으며 사용자는 프랑스어 스페인어 러시아어 중국어와 같은 다른 언어를 사용하고있을 가능성이 큽니다. – Sebastien

+0

다음은 웹 페이지/앱에서 인코딩을 설정하는 방법입니다. HTML : PHP : header ('Content- text/html; charset = UTF-8 '); AJAX (noJQuery) : xhr.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded; charset = UTF-8"); – Sebastien