0

これは私の質問hereの延長です。

リンク先の質問の詳細情報を収集するための簡単なテストで、phpMyAdmin インターフェイスを介してデータベースにアンパサンド文字を挿入しようとしました...

INSERT INTO `my_db`.`some_table` (`id`, `version`, `value`) VALUES (NULL, '0', '&');

...しかし、挿入されるのは、同等の HTML です&

データベースの照合順序はutf8_bin、挿入するテーブルはutf8_general_ci、アンパサンドを挿入しようとしているフィールドのタイプはvarcharです。

&生のアンパサンド文字を MySQL データベースに挿入するにはどうすればよいですか?

アップデート:

phpMyAdmin の何が問題なのかはわかりませんが、アプリケーションの問題を見つけたと思います。Hibernate が接続に正しい文字セットを使用していなかったようです。すでにカスタムの MySQL 方言を指定していたので、getTableTypeString以下に示すようにメソッドを上書きしただけで、アプリケーションは MySQL に適切に値を挿入するようになりました。

class CustomMySQL5InnoDBDialect extends MySQL5InnoDBDialect {   
    @Override
    public String getTableTypeString() {
        return " ENGINE=InnoDB DEFAULT CHARSET=utf8"
    }
}
4

2 に答える 2

0

phpMyAdmin の何が問題なのかはわかりませんが、アプリケーションの問題が見つかったと思います。Hibernate が接続に正しい文字セットを使用していなかったようです。すでにカスタムの MySQL 方言を指定していたので、以下に示すように getTableTypeString メソッドをオーバーライドしただけで、アプリケーションが MySQL に適切に値を挿入するようになりました。

class CustomMySQL5InnoDBDialect extends MySQL5InnoDBDialect {
@Override public String getTableTypeString() { return " ENGINE=InnoDB DEFAULT CHARSET=utf8" } }

于 2013-10-01T18:06:55.120 に答える
0

あなたは試すことができます:

INSERT INTO `my_db`.`some_table` (`id`, `version`, `value`) VALUES (NULL, '0', _utf8'&');
于 2013-09-30T15:54:13.487 に答える