はちょうど今、私は単なる偶然では前に遭遇していなかった問題に遭遇しましたutf8_mb4
と私のデータベース内でエンコードするいくつかの列も同様です。取り扱い混合UTF8とutf8mb4 mysqliの&PHP
ここで、実際には、utf8
エンコードフィールドから来るアクセント付き文字を正しく処理しないPHPの問題に遭遇しました。
今、私はutf8
とutf8mb4
の結果が混ざっていることに固執しています。私のデータ処理はあまり強くないので(私のためにすべてを処理したフレームワークを使用するために使用されていました)、私はこれをどうすれば最もうまく解決できるのかよくわかりません。
私は、次のオプションについて考えている:
1)utf8mb4
照合の代わりに、いくつかの例外を除いてutf8
に私の全体のデータベースを設定します。
2)それを変更するmysqli_set_charset()
を使用し、単にクエリは、データが今
を区切られたばかりことを確認し、これらのいずれもが私には素晴らしいアイデアのように見えるが、私は本当に任意のより良い解決策を考えることはできません。
それでは、残りの質問があります:
- は大きなパフォーマンスの変化で
utf8mb4
代わりのutf8
に私の全体のデシベルを設定するのでしょうか?私はutf8mb4
がより大きく、ゆっくりであることを認識しています。なぜなら、最初の問題の列でのみ使用しようとしたのです。 mysqli_charset
がutf8mb4
にある場合でも、PHPハンドルutf8
がうまくエンコードされる方法がありますか?- 良いアイデアはありますか?
私はこの件に関して本当に迷っています。私は正直なところ、どのオプションが最適か推測できません。私はあなたのデータベースをutf8mb4
に変換する方法の違いを説明しているリンクを返してくれるだけなので、あまり役に立ちませんでしたので、この賢いSOの同僚の考えを聞いて大変ありがとうございます!
この特定のケースで列:
PHPの文字エンコーディング検出を含む私の応答:
arri�n = UTF-8
bolsward = ASCII
go�nga = UTF-8
lo�nga = UTF-8
echt = ASCII
echteld = ASCII
echten (drenthe) = ASCII
echten (friesland) = ASCII
echtenerbrug = ASCII
echterbosch = ASCII
マイmysqliの文字セット: mysqli_set_charset($this->getConn(), "utf8mb4");
- と私はちょうど実現問題は私のmysqli_set_charset
でした。実際にそこのアンダースコアに使用されていました...
私はあなたの答えを他の質問で読んだのですが、私の問題は特に黒い菱形です。 今、あなたが最初に言ったことはすべてあなたが言っています。私のメタタグ、PHPヘッダ、私が持っているすべての文字セットは、ここに書かれている通り、 'UTF-8'に設定されています。文字列ごとに文字セットを取得し、特殊文字を含むすべての文字列に対して 'UTF-8'を返しました。 (非特殊文字列の場合は 'ASCII ')。私が今考えることのできる唯一のことは、PHPMyadminからデータベースに直接データを入力することです(しかし、クエリーを通じて)。そうかもしれない?私は今失っている。 – NoobishPro
Yeeeeeep、他の投稿のあなたの答えのおかげで、最後に解決しました。 これは 'mysqli_set_charset()'にかなり遅れてしまいました。私は特に 'utf8'や' utf8mb4'を使用しなければならず、 'UTF-8'を使用しなければなりません。また、私はPHPMyAdminという命名法を使用していましたが、それは明らかに非常に愚かでした。 (私はそこからアンダースコアのスペルをもらった!) ありがとう!あなたは私の人、ビールに値する! – NoobishPro
賞賛いただきありがとうございます。私は自問自答の質問に私のアドバイスを数年かけて過ごしました。そのQ&A(またはこの1つ)にスペルミスがあると言っていますか?もしそうなら、私はそれを修正する必要があります。 –