CharsetHelper::safeJsonEncode

(PHP 7 >= 7.4.0, PHP 8)

CharsetHelper::safeJsonEncode — JSON encode with automatic charset repair

Description

public static CharsetHelper::safeJsonEncode(
    mixed $data,
    int $flags = 0,
    int $depth = 512,
    string $from = CharsetHelper::WINDOWS_1252
): string

Safely encodes data to JSON by automatically repairing charset issues before encoding. Prevents json_encode from returning false due to invalid UTF-8 sequences.

Parameters

data:

The data to encode. Can be any type supported by json_encode.

flags:

Bitmask of JSON encode options (same as json_encode).

depth:

Maximum depth. Must be greater than zero.

from:

Source encoding for repair if data contains invalid UTF-8. Defaults to Windows-1252.

Return Values

Returns a JSON encoded string.

Errors/Exceptions

Throws RuntimeException if JSON encoding fails after repair.

Examples

Example #1 Safe JSON encoding

<?php
use Ducks\Component\Component\EncodingRepair\CharsetHelper;

$data = [
    'name' => 'Gérard',
    'description' => 'Développeur'
];

$json = CharsetHelper::safeJsonEncode($data);
echo $json; // {"name":"Gérard","description":"Développeur"}

Example #2 API response with encoding safety

<?php
use Ducks\Component\Component\EncodingRepair\CharsetHelper;

class ApiController {
    public function jsonResponse($data): JsonResponse {
        $json = CharsetHelper::safeJsonEncode($data, JSON_PRETTY_PRINT);
        return new JsonResponse($json, 200, [], true);
    }
}

Example #3 Error handling

<?php
use Ducks\Component\Component\EncodingRepair\CharsetHelper;

try {
    $json = CharsetHelper::safeJsonEncode($data);
} catch (RuntimeException $e) {
    echo "JSON Error: " . $e->getMessage();
}

See Also