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
PHP-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");
"t\u00e4st"
PHP-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 - - -
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')));
string '{"test":"t\u00e4\u00e4st"}' (length=26)
string '{null:"t\u00e4\u00e4st"}' (length=24)
-
06.06.2014, 08:58 #2
- Registriert seit
- 15.11.2011
- Beiträge
- 7.885
- Blog Entries
- 5
Thanked 9.365 Times in 3.204 PostsAW: 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.