Benzol (06.06.2014)
Thema: JSON UTF8
-
06.06.2014, 08:27 #1
JSON UTF8
Ich habe das 1. mal JSON benutzt und durfte dabei gleich feststellen dass json_encode keine Sonderzeichen mag. Nach stundenlangem rumsuchen bin ich darauf gestoßen dass man vorher UTF8 kodieren muss damit json_encode nicht nur null zurückgibt. Damit so etwas nerviges nicht noch mal passiert möchte ich eine Funktion schreiben die mir JSON generiert und vorher UTF8 kodiert.
Was ich bis jetzt versucht habe
Mit normalen Texten geht esPHP-Code:function JsonEncoding($data){
if(is_array($data)){
$data = array_map('utf8_encode', $data);
}else{
$data = utf8_encode($data);
}
$data = json_encode($data);
return $data;
}
=PHP-Code:echo Json_Encoding("täst");
Aber wenn ich z.b. so was mache"t\u00e4st"
bekomm ich wieder nullPHP-Code:echo Json_Encoding(array('täst' => 'lol'));

Ich möchte gerne eine Funktion machen die ALLES automatisch mit UTF8 kodiert damit ich vergessen kann dass diese Drecks Funktion das nicht automatisch macht. Will nicht noch mal 2 stunden rumsuchen. Warum geht array_map nicht?
- - - Aktualisiert - - -
Das geht aber nur für das rechts im Array.PHP-Code:function JsonEncoding($data){
if(is_array($data)){
array_walk_recursive($data, 'encode_items');
}else{
$data = utf8_encode($data);
}
$data = json_encode($data);
return $data;
}
function encode_items(&$item, &$key){
$key = utf8_encode($key);
$item = utf8_encode($item);
}
PHP-Code:var_dump(JsonEncoding(array('test' => 'tääst')));
var_dump(JsonEncoding(array('tääst' => 'tääst')));
WAS IST DAS FÜR EIN MIST?string '{"test":"t\u00e4\u00e4st"}' (length=26)
string '{null:"t\u00e4\u00e4st"}' (length=24)
-
06.06.2014, 08:58 #2Projektleitung
- Registriert seit
- 15.11.2011
- Beiträge
- 8.398
- Blog Entries
- 5
Thanked 9.508 Times in 3.323 Posts
AW: JSON UTF8
Die Schlüssel eines Arrays kann man so in PHP nicht verändern, auch nicht über Zeiger. An einem zweiten Array führt also kein Weg vorbei.
PHP-Code:/**
* Kodiert ein komplettes Array rekursiv mittels utf8_encode
* @param array $data Zu kodierendes Array
* @return array
*/
function recursiveUTF8Encode($data) {
if(is_array($data)) {
$utf8Encoded = array();
foreach($data as $key => $value) {
$utf8Encoded[utf8_encode($key)] = recursiveUTF8Encode($value);
}
return $utf8Encoded;
}else {
return utf8_encode($data);
}
}
PHP-Code:$test = array(
'täst' => array(
'täst2' => array(
'täst3' => 'täst4'
),
)
);
$json = json_encode(recursiveUTF8Encode($test));
var_dump($json);
var_dump(json_decode($json, true));
Code:string '{"t\u00e4st":{"t\u00e4st2":{"t\u00e4st3":"t\u00e4st4"}}}' (length=56) array (size=1) 'täst' => array (size=1) 'täst2' => array (size=1) 'täst3' => string 'täst4' (length=6)
-
The Following User Says Thank You to DMW007 For This Useful Post:
Ähnliche Themen
-
VB.Net Suche Pattern für JSON String
Von exception im Forum .NetAntworten: 4Letzter Beitrag: 12.02.2014, 01:28 -
VB.Net Json String richtig parsen???
Von soulreafer im Forum .NetAntworten: 1Letzter Beitrag: 06.07.2013, 17:15 -
Suche AutoIt JSON-Decoder
Von IchBinz im Forum SkriptsprachenAntworten: 1Letzter Beitrag: 19.02.2012, 11:09
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.