2013-03-18 2 views
0

문자열을 MySQL DB 테이블에 저장할 때 json_encode/decode 함수에 문제가 있습니다. 문제는 ÅÄÖ과 같은 스웨덴 문자입니다. 내가 말했듯이 내가 DB에 jsonstring를 저장할 때 하면 그것은 잘 작동json_encode/decode char problems

$my_arr = array('Räksmörgås'); 
$json = json_encode($my_arr): 
print_r(json_decode($json)); 

같은 것을 가지고, 문제는, 다음을 수집한다. 테이블 (전체 DB)에는 인코딩 'utf8_general_ci'가 있습니다. 나는 동일한 결과로 'Ru00e4ksmu00f6rgu00e5s'이 될 uft8_unicode_ci '도 시도했습니다. 이 valus를 저장하는 열은 'TEXT'입니다.

내가 뭘 잘못하고 있니?

편집이 플러그인은 wordpress 용이고 $ wpdb-> prepare() 및 $ wpdb-> query()를 사용하고 있습니다.

+0

데이터베이스 연결이 UTF8로 구성되어 있는지 확인하십시오. 예 : mysql_query ("SET NAMES 'utf8'");'. – Sjoerd

답변

1

코드에서 슬래시를 제거하고 있습니다.

// text: Räksmörgås 
// json_encode(): R\u00e4ksm\u00f6rg\u00e5s 
// your output: Ru00e4ksmu00f6rgu00e5s 
+0

흠. 네가 옳아. json_encode는 백 슬래시로 처리하지만 데이터베이스 문자열은 스트립으로 처리됩니다. 이걸 보지 못 했어. 그래서, 그것은 $ wpdb-> 내가 생각하는 것을 준비하는 것과 관련이 있습니다. – gubbfett

+0

그래! phpmyadmin으로 백 슬래시를 수동으로 추가하면 출력이 정확합니다! – gubbfett

+0

그러면 삽입이 올바르지 않습니다. 삽입시 'stripslashes()'가 있습니다. –

0

TEXT 필드를 BLOB에 저장 결과에 시도하지. 데이터를 저장할 때 무엇을 사용 했습니까? PDO? Mysqli? 미스?

+0

사실, 그것은 wordpress 용 플러그인입니다. 그래서 나는 $ wpdb-> prepare()와 $ wpdb-> query()를 사용한다. 나는 얼룩을 볼거야! – gubbfett