私はスリムフレームワークとAPIを行なったし、私はutf8mb4_unicode_ciでエンコードされのMySQLデータベースからデータを取得します。不正なUTF-8文字
私がプログラミングしていたとき、私はPHP v7を使用していました。正しい方法でデータを取得するには、私は私のAPIコードの先頭に以下のコードを挿入する必要がありました。これにより
setlocale(LC_ALL, "pt_BR", "pt_BR.utf-8", "pt_BR.utf-8", "portuguese");
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_regex_encoding('UTF-8'); // I need it because I use mb_ereg_replace to replace with a regex in UTF-8.
すべてのデータが正しい方法で返されたので、私はutf8_encode
を使用する必要はありませんでしたまたはutf8_decode
機能です。しかし、後にPHP v5.6をを持っている公式のサーバー、内部でそれをインストールし、私が得た:
Slim Application Error
The application could not run because of the following error:
Details
Type: RuntimeException
Code: 5
Message: Malformed UTF-8 characters, possibly incorrectly encoded
File: Slim/Http/Response.php
Line: 318
私は、私は本当にそれがPHPのバージョン5での問題だと思う...それを修正する方法がわかりません。 6、多分?またはスリムフレームワーク?または、PHP v5.6でutf8mb4_unicode_ciを使用する別の方法がありますか?
EDIT
私はすべての権利でしたが、私はのstrtotime関数を呼び出すした問題をコーディングするためにもっと注意を探していたとき、私はuft8_decode
をuft8_encode
、mb_*
機能を使用しようともしました問題を解決するには何も効果がなかったので、私が作成した別の関数でアクセントを取り除かなければならなかった。今はうまく働いています。私のindex.phpで
このエラーは何を生成しますか?エンコードコードはいいですが、もっと情報が必要です – Machavity
'mb_ *'ルーチンへのすべての呼び出しを取り除きます。それから、 "ベストプラクティス"をチェックしてください。http://stackoverflow.com/a/38363567/1766831 –
@Machavity @Rick James私は大丈夫でしたが、私がコードにもっと注意を払うと、私がstrtotime私は 'uft8_encode'、' mb_ * '関数と' uft8_decode'を使って問題を解決しようとしましたが、何も働かなかったので、作成した別の関数でアクセントを取り除かなければなりませんでした。今はうまく働いています。 – itscaiqueck