サポート » プラグイン » 【MW WP Form】旧字や異体字が入ったが文字化けします

  • MW WP Formで作成したフォームに特定の旧字や異体字が文字化けを起こして送信内容で【?】に置き換わってしまいます。

    例えば【高槗】の【槗】の字などが化けてしまいます。

    調べてみたらWP Multibyte Patchが原因で文字化けをすることがあるそうだったので、下記のサイトのようにメールの文字コードをISO-2022-JPからUTF-8に変更してみました。

    https://showjinx.hatenablog.com/entry/wp-multibyte-patch-jis

    そうすると上記の【槗】は変換されずに届くようになったのですが、今度は【𫞎】や【𠮷】などの別の旧字や異体字が入っていると確認画面で入力項目が全て消えるようになってしまいました。

    旧字や異体字が入っていても文字化けさせないで送信が出来るようにしたいと思っているのですが、解決策をご存知の方がいらっしゃいましたらお力添えをお願いします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こんにちは

    【槗】は UTF-8 では E6A797 で3バイトです。
    【𫞎】は UTF-8 では F0AB9E8E で4バイトです。

    これはちょっと確信があるわけではないのですが、データベースのキャラクターセットがuft-8になっているのではないでしょうか。
    4バイトの文字を保存する場合にはutf8mb4である必要があります。

    MW WP Form の中身を確認したわけではないのですが、入力値を一時保存するために WordPress の Transients API を使っている場合には、データベースに一時的に値が保存されます。
    このとき、データベースが対応できていないと文字が消えてしまう・・・のではないかと思います。

    では、現在uft-8になっていて、utf8mb4に変換するにはどうすれば良いかというと、私の知識では簡単に変換する方法を思いつけません。

    どなたかいい方法をご存じないでしょうか。
    解決方法を提示できず、申し訳ありません。

    ご返答ありがとうございます。

    データベースのキャラクターセットですが、下記の記事でutf8mb4にするやり方があったので、試してみたのですがそそれでも消えてしまう現象は発生しました。

    https://freefielder.jp/blog/2013/03/wordpress-4-byte-chars.html

    なので、別の方法が無いかもう少し調べてみようと思います。

    その記事の通りにやってもダメです。

    今回で言えば、変更すべきテーブルはwp_optionsです。
    その記事に従えば、option_valueだけutf8mb4に変更わけですが、正しくはデータベース自体の照会順序とカラムの照会順序をutf8mb4_general_ciに変更する必要があります。

    また、wp-config.php を ‘utf8mb4 に変更していますが、他のデータベースとそのカラムがuft-8のままで WordPress が正しく動作するものなのかどうなのか、私には確信がありません。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。