Ne yaptıysam olmadı, json ile veri okurken türkçe karakter sıkıntısı yaşıyorum.
Ç harfini \u00e7 diye gösteriyor.
Notepad++ ile UTF-8 BOOM'suz yaptım olmadı, UTF-8 yaptım olmadı.
DB Charset: utf8_turkish_ci.
utf8_encode(); fonksiyonunu kullandım olmadı. Daha ne yapmalıyım ?
Json Türkçe Karakter Sorunu
6
●6.491
- 27-11-2013, 18:28:45
- 27-11-2013, 20:04:09\u00e7 ,\u011f gibi türkçe karekterler unicode'dir. Dönüştürmeniz lazım . Ben genellikle şu fonksiyonu kullanıyorum
function unicode_decode($str){ return preg_replace("/\\\u([0-9A-F]{4})/ie", "iconv('utf-16', 'utf-8', hex2str(\"$1\"))", $str); } function hex2str($hex) { $r = ''; for ($i = 0; $i < strlen($hex) - 1; $i += 2) $r .= chr(hexdec($hex[$i] . $hex[$i + 1])); return $r; }Kullanımı şu şekilde oluyor
$duzeltilmis = unicode_decode($turkceKarekterli);
- 27-11-2013, 20:14:24Üyeliği durdurulduJson dosyasına doğrudan erişim sağladığınızda zaten karakterleri bu şekilde görmeniz normal.
jsonu encode ederek kullanan script ekrana düzgün bastırması gerekiyor
<?php
$a[]='ıçÇş';
$b=json_encode($a);
$c=json_decode($b);
var_dump($c);
?>
bu kodu calıstırdığınızda tr karakter hatanız yok ise yanlış bir durum yok demektir.
Kısacası :
Json dosyasına doğrudan eriştiğinizde gördüğünüz :

Ekrana basıldığında bu şekilde gözükür :
- 27-11-2013, 20:27:37Composer kullanmayı biliyorsanız Zend\Json\Decoder::decode() fonksiyonu işinizi görecektir.
composer.json;{ "target-dir": "Zend", "autoload": { "psr-0": { "Zend": "" } }, "require": { "php": ">=5.3.3", "zendframework/zend-servicemanager": "2.3.*@dev", "zendframework/zend-eventmanager": "2.3.*@dev", "zendframework/zend-serializer": "2.3.*@dev", "zendframework/zend-stdlib": "2.3.*@dev", "zendframework/zend-math": "2.3.*@dev", "zendframework/zend-json": "2.3.*@dev" }, "minimum-stability": "dev" }app.php;<?php header("Content-Type: text/plain; charset=UTF-8"); require("vendor/autoload.php"); $data = array( "member" => array( "nickname" => "saintx", "name" => "Ogün", "surname" => "KARAKUŞ", "age" => 17 ) ); $output = (object) array( "output" => (object) array( "php_function" => (object) array( "encoded" => json_encode($data), "decoded" => null ), "zendframework_json" => (object) array( "encoded" => Zend\Json\Encoder::encode($data), "decoded" => null ) ) ); $output->output->php_function->decoded = json_decode($output->output->php_function->encoded); $output->output->zendframework_json->decoded = Zend\Json\Decoder::decode($output->output->zendframework_json->encoded); print_r($output);
