Quest
Ben aksanlı karakterler satırları almak için arıyorum. Sütun için kodlama (NAME
) olan latin1_swedish_ci
.
The Code
Aşağıdaki sorgu döndürür Abord â Plouffe
phpMyAdmin kullanarak:
SELECT C.NAME FROM CITY C
WHERE C.REGION_ID=10 AND C.NAME_LOWERCASE LIKE '%abor%'
ORDER BY C.NAME LIMIT 30
Aşağıdaki görüntüler değerleri (function db_fetch_all( $result )
) denir bekleniyor:
while( $row = mysql_fetch_assoc( $result ) ) {
foreach( $row as $value ) {
echo $value . " ";
$value = utf8_encode( $value );
echo $value . " ";
}
$r[] = $row;
}
Görüntülenen değerler: 5482 5482 Abord â Plouffe Abord â Plouffe
Daha sonra dizi kullanılarak kodlanmıştır json_encode
:
$rows = db_fetch_all( $result );
echo json_encode( $rows );
Problem
Web tarayıcısı aşağıdaki değeri alır:
{"ID":"5482","NAME":null}
Yerine:
{"ID":"5482","NAME":"Abord â Plouffe"}
(Ya da kodlanmış eşdeğer.)
Question
Dokümantasyon json_encode()
UTF-8 üzerinde çalıştığını belirtiyor. Ben UTF-8 Latin1 gelen kodlanmış olan değerleri görebilirsiniz. json_encode()
için çağrısının ardından, ancak değer olur null
.
Nasıl json_encode()
düzgün UTF-8 değerleri kodlamak yapabilirim?
Olası bir çözüm Zend Framework kullanmak için, ama ben oldukça bu önlenebilir değil ediyorum eğer.