一見有効な PHP 配列を使用しているにもかかわらず、 json_encode() によって空の文字列が返されるという複雑な問題に直面すると、根本的な原因をより深く掘り下げることが重要です。
の場合提示されたところ、原因はエンコーディングの問題であることが判明しました。 mb_detect_encoding() 関数は、一部の文字列が非 UTF-8 であることを示す誤った応答を返した可能性があります。その結果、json_encode() はデータを適切にシリアル化できませんでした。
幸いなことに、この謎には解決策があります。影響を受ける文字列に utf8_encode() を使用することで、問題は解決されました。ただし、utf8_encode() は ISO-8859-1 文字列を UTF-8 にエンコードすることに注意することが重要です。
入力エンコードが不確実な場合は、柔軟性を高めるために、代わりに iconv() または mb_convert_encoding() を使用することを検討してください。
包括的な UTF-8 変換を保証するには、次のような再帰関数を使用します。 utf8ize() は非常に貴重です。この関数を入力配列に適用すると、すべての文字列が強制的に UTF-8 に変換され、JSON シリアル化が成功するための道が開かれます。
以上がPHP で「json_encode()」が空の文字列を返すのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。