2011-03-12 7 views
1

jQuery를 사용하여 서버에서 텍스트 파일을 검색하고 코드 미러 편집기로로드합니다.jQuery.get을 사용하여 utf-8 데이터 가져 오기

üöIiçgIös

그것은으로 표시됩니다 : 나는 다음 테스트 문자열 테스트 파일이있는 경우

(이 크롬에)

sIigIs을

jQuery.get() 호출로 데이터를로드합니다. Chrome의 스크립트 디버거를 사용하여 jQuery가 데이터를 어떻게 든 변환하는 것을 볼 수 있습니다. 기본적으로 (잘못) ASCII로 변환합니다.

나는 직접 데이터를 다운로드하면 이용 할수있는 데이터가 있음을 확인했습니다. Fiddler를 사용하여 콘텐츠 유형이 "text/plain; charset = UTF-8"임을 확인했습니다. 마지막으로 메뉴에서 전체 페이지가 UTF-8 인코딩을 볼 수 있습니다. 하지만 왜 jQuery가 데이터를 변환하는지 알 수 없습니다.

다음은 데이터를로드하는 데 필요한 jQuery 코드입니다.

jQuery.get(path+file,null,function(data) 
{ 
    var initialContent = data; 
    if(!initialContent) 
    { 
    initialContent = "\n"; 
    } 

    document.getElementById("fileContent").value = initialContent; 
    config.content = data, 
    editor = new CodeMirror(document.getElementById("codeMirrorDiv"), config); 
},'text'); 
+0

"URL을 호출 할 때 브라우저의 문자 세트 감지가 UTF-8로되어 있습니까?"라는 직접 다운로드를 사용하여 올바른 데이터가로드되었음을 확인했습니다. ISO-8859-x 또는 그 밖의 다른 파일로 점프하지 않습니까? 100 % 확실한가요? –

+0

나는 주소 표시 줄에 URL을 직접 입력하고 파일을 다운로드하여 디스크에 저장하면 올바른 바이트가로드되었음을 의미합니다. –

+0

URL을 직접로드하고 브라우저가 어떤 인코딩으로 전환하는지 확인할 수 있습니까? –

답변

1

저는 몇 년 동안 jQuery를 사용해 왔지만, 사용자가 설명하는대로 데이터를 "변환"하는 것을 본 적이 없습니다. 그게 가능 할지도 모르겠다. 또한

<meta http-equiv="Content-type" content="text/html;charset=UTF-8" /> 

, 당신이 당신의 텍스트 파일을 편집 할 때, 당신은 실제로 UTF-8을 편집하고 있는지 확인하십시오

데이터가 <head>이있다 표시되는 위치를 확인 페이지를 확인 .

+0

있습니다. 아주 이상한. 나는이 문제를 계속해서 고민 할 것이다. 어쩌면 내가 레이어를 통해 데이터의 경로를 잘못 해석하고 있습니다. –

0

일반적으로 데이터베이스의 잘못된 데이터 때문입니다. 이 경우

mysql_query("SET NAMES utf8"); 
mysql_query("SET CHARACTER SET utf8"); 
mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'"); 

PHP 파일에이 헤더를 추가하려고 다음 도움이되지 않습니다 :
는 데이터베이스에 연결 한 후 다음 명령을 추가하려고

header('Content-Type: text/html; charset=utf-8'); 

그것의 좋은 알고 그 모든 파일 (php, html ...)은 utf-8 인코딩이어야합니다. 이 작업을 수행하는 가장 쉬운 방법은 다음과 같습니다 메모장

  • 파일 열기
  • 파일 -
  • 이 완료 목록 드롭 다운 하단에 인코딩을 선택 저장하기 전에
  • 으로
  • 저장>!
-1

인코딩 및 헤더가 설정되어 있고 여전히 데이터가 올바르지 않은 경우 서버 측 (PHP, JAVA, ...)에 문제가있는 것 같습니다. 서버 쪽에서 모든 문자열 조작 함수를 확인하십시오. PHP를 들어

:

$WRONG_string = substr($string, 0, 10); 
$CORRECT_string = mb_substr($string,0,10,'utf-8'); 

당신은 PHP는 다음 문자열 인코딩 기능 설명서를 확인해야합니다 같은 다른 서버 측 언어를 사용하는 경우.

관련 문제