Search code examples
javascriptphpjsonwordpressjsonp

Json_encode umlauts output


I want to show my output in German umlauts, i got my output like this for example Fu009\ but i need "fü" like this.

<?php
$json = (object) array(
    "salutation" = > ''.$order - > order_custom_fields['_billing_anrede'][0].
    '',
    "title" = > ''.$order - > order_custom_fields['_billing_titel'][0].
    '',
    "first_name" = > ''.$order - > order_custom_fields['_billing_first_name'][0].
    '',
    "last_name" = > ''.$order - > order_custom_fields['_billing_last_name'][0].
    '',
    "street" = > ''.$order - > order_custom_fields['_billing_address_1'][0].
    '',
    "street_number" = > ''.$order - > order_custom_fields['_billing_address_2'][0].
    '',
    "address_supplement" = > ''.$order - > order_custom_fields['_billing_company'][0].
    '',
    "zipcode" = > ''.$order - > order_custom_fields['_billing_postcode'][0].
    '',
    "city" = > ''.$order - > order_custom_fields['_billing_city'][0].
    '',
    "country" = > ''.$pais.
    '',
    "terms_accepted" = > true,
    "receiving_mails_accepted" = > ''.$email.
    '',
    "email" = > ''.$order - > order_custom_fields['_billing_email'][0].
    '',
    "lottery_accepted" = > false,
    "lottery_solution" = > "LOTTERY",
    "original_created_at" = > ''.date('Y-m-d\TH:i:sP', strtotime($order - > order_date)).
    '',


);

foreach($items as $item) {
    $sku = $wpdb - > get_var($wpdb - > prepare('SELECT meta_value FROM dsr_postmeta WHERE meta_key="_sku" AND post_id='.$item['product_id'].
        ''));
    $sku_s = explode('-', $sku);
    $camp = $sku_s[0];
    $itm_n = $sku_s[1];
    $json - > items[] = (object) array(
        "campaign_number" = > (int) $camp,
        "item_number" = > (int) $itm_n,

    );
}



array_push($json_full, $json);
echo json_encode($json_full);
?>

I'm thinking about htmlentities, or utf8 thanks for you help!!


Solution

  • In case you are using PHP 5.4+, change echo json_encode($json_full); to echo json_encode($json_full, JSON_UNESCAPED_UNICODE);

    Full list of json_encode predefined constants can be found there: https://www.php.net/manual/en/json.constants.php

    Demonstration

    Code:

    <?php
    $json = (object) array(
      "uml" => "fü",
    );
    
    echo json_encode($json, JSON_UNESCAPED_UNICODE) . PHP_EOL;
    
    echo json_encode($json) . PHP_EOL;
    

    Output:

    {"uml":"fü"}
    {"uml":"f\u00fc"}