2008-12-08 7 views
2

나는 다음과 같은 자바 스크립트 코드가 있습니다, 그러나 HTML은 유니 코드 문자를 포함합니다 (makewindows 기능은 PHP는 변수 표시하도록 변경되었습니다) 잘 작동로 json_encode 및 MySQL의 유니 코드 문제

http://www.nomorepasting.com/getpaste.php?pasteid=22561

을 첫 번째 유니 코드 문자까지 이어지는 문자 만 할당됩니다. 작은 테스트 파일을 만들고 article_desc를 직접 출력하면 올바른 기호 대신 quetsions 표시가 표시되지만 모든 html이 출력됩니다. 그러나 json_encode는 html을 짧게 잘라내어 오류를 유발합니다.

편집 :

http://www.yousendit.com/download/TTZueEVYQzMrV3hMWEE9PQ

는 UTF-8 소스 말한다 : 여기에 바로 내가 화면으로 노력하고있는 HTML의 MySQL 데이터베이스에서 덤프입니다.

http://www.nomorepasting.com/getpaste.php?pasteid=22566

은 확실히 같은 기록이다, 그래서 그것은 매우 다른 것 같다 이유는 확실하지 오전 : article_desc을 울리는에서 생성 된 실제 페이지 코드는 여기에있다.

수정 : 이것은 다음과 같이 수정되었습니다 : mysql_query ('SET NAMES utf8');

+0

? 즉 물음표가 있습니까? –

+0

내가 말할 수있는 것은 데이터베이스에는 의문의 여지가 없지만 올바른 유니 코드가 아닐 수도 있습니다. –

답변

-1

json_encode가 필요하다고 생각하지 않습니다. json_encode는 PHP 배열과 객체를 읽을 수있는 JavaScript 형식으로 인코딩합니다. 아약스에서 일반 텍스트 또는 HTML을 보내면 json_encode가 필요하지 않습니다.

+0

json_encode도 따옴표를 이스케이프 처리하는 것과 같은 것을 처리 할 것입니다 –

+0

내 잘못을 맞았습니다 :) – Irmantas

3

json_encode은 문자열이 UTF-8로 인코딩 된 바이트 스트림이어야합니다. 내부적으로 utf-8로 인코딩 된 문자열을 사용해야합니다 (어쨌든 PHP에서 유니 코드 문자를 처리하는 유일한 방법) 또는 a different library을 사용하여 json을 생성해야합니다.

+0

데이터를 변환하거나 유니 코드로 mysql 데이터베이스에 삽입하는 방법이 있습니까? –

+0

Zend를 사용할 수 없습니다. –

+0

utf8_encode()를 사용하여 latin1 문자열 (php5의 기본값)을 변환 할 수 있습니다. Zend Framework 컴포넌트를 사용할 수없는 이유는 무엇입니까? – troelskn

1
json_encode(utf8_encode($Content)); 

이렇게하면 문제가 해결됩니다.

+6

배열을 인코딩하려는 경우가 아닙니다. – typeoneerror

2

나는 동일한 문제가있었습니다. Zend_Db/mysqli를 사용하고 있으며 데이터베이스 내용이 실제로 UTF8입니다.

$pdoParams = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;'); 
$conf->db->params['driver_options'] = $pdoParams; 

당신이 돈이 ': 대신 mysqli의 PDO를 사용하는 경우

$conf->db->params['charset'] = 'UTF8'; 

, 당신이이 방법을 수행 할 수 있습니다

나는 UTF8을 사용하여 내 데이터베이스 어댑터를 요청하여 문제를 해결 Zend_Db를 사용하되 mysqli를 사용하면 http://php.net/manual/en/mysqli.set-charset.php을 볼 수 있습니다.

출처 : http://www.zfsnippets.com/snippets/view/id/13 당신은 유니 코드 데이터베이스에 맞는지 볼 수 있습니다