2011-11-01 15 views
6

現在、特殊文字(®&©)をmySQLデータベースに保存する際に問題が発生しています。MySQLデータベースに特殊文字を保存する

ローカルスタック(開発マシンのローカル)では、操作がスムーズに実行され、フロントエンドに入力された内容が期待通りに保存されます。

DBに保存するときに中央集中型サーバー上の同じフロントエンドコードを使用すると、文字は他の文字で続行され、®として保存されます。 フロントエンドでレコードを表示しているときに、そのレコードを元に戻して正しく表示するので、これは問題ではありません。

この問題は、同じデータベースを使用する別のシステムから発生し、変更を行わないため、単に®ではなくÂとして表示されます。

私の混乱の理由は、ローカルスタック上で必要に応じて動作するように見えますが、中央サーバでは動作しないようです。

私は、自分のローカルに比べてどのような原因でサーバの設定が行われているか調べるためのアイデアを探しています。事前 マーク

+0

のフォームタグに文字セット-受け入れるを追加

<form action=\"testsubmit.php\" method=\"post\" accept-charset=\"latin1_swedish_ci\">
  • セット文字セットは、フロントエンドはPHPで書かれている追加するのを忘れ。 – MarkJWiggins

  • +1

    PHPのデフォルトエンコーディング、mysql接続エンコーディング、mysqlテーブルとフィールドの照合が同じであることを確認してください。 –

    +0

    +1 Pranavはほとんどのことをカバーしています - 確かにこれを行う必要があります。 – therobyouknow

    答えて

    1

    おかげで、あなたは、PHPコードでDBを選択した後にこれを追加します。あなたがテキストを保存する列がUTF8エンコーディングを持っている場合

    mysql_query("set names 'utf8'"); 
    

    も確認してください。

    +0

    +1 @Soaica Mircea、よかった。いくつかのシナリオを検討する価値がある。私はこれを再現し、mysql_query( "set names 'utf8'")を必要とせずに解決策を提供することができたので、これはOPの元の問題には必要ではないかもしれません。しかし、これは他のシナリオにとっては有用かもしれません。再度、感謝します。 – therobyouknow

    2

    @Pranav Hosangadi(ありがとう)は、エンコードの一貫性をチェックする3つの領域をカバーしています。次の解決策はそれに追加されます。この答えが問題を解決しないシナリオでは、@Soaice Mirceaの答え(感謝も)を考慮する価値があるかもしれませんが、問題を再現して解を見つけることができたときには必要ではありませんでした。 @ Pranavの考え方は、特定の文字セットではなく、すべての文字セットを一貫して使用するという点で、この問題の解決に成功しているようです。行う

    5もの:

    1. データベースの文字セットを確認し、テーブルが全体で同じ文字セットを使用して、例えば、phpMyAdminのでこれを検査し、音符と

    2. 使用PHPのヘッダ(以下使用するためにこの文字セット)データベース文字セットなどを持つ関数:HTMLヘッダーの例で

      header('Content-Type: text/html; charset=latin1_swedish_ci');
    3. 挿入メタタグ:

      <meta http-equiv="content-type" 
      content="text/html;charset=latin1_swedish_ci">
    4. MySQL接続例えば:

      $con = mysql_connect("localhost","test","test");  
      mysql_set_charset ("latin1_swedish_ci", $con); 
      
    +0

    上記のステップ5は、mysql接続を設定すると、同じサーバー上の他の場所では動作しない可能性があります。エラーメッセージであるlatin1を初期化できません。関連のないソフトウェアのhttp: //bugs.kde.org/226960その議論の示唆:あなたの誰かが/ usr/share/mysql/charsetsを見て、そこに のlatin1.xmlファイルがあると報告できますか?それは私のセットアップの分離されたidiosyncracyかもしれないので、この答えをオフにします。 – therobyouknow