1

データベースからキリル文字を読み取っているときは問題ないのに、このテキストを選択オプション メニューに入れると奇妙な記号が表示されるのはなぜですか

http://prikachi.com/images/813/6589813g.jpg http://prikachi.com/images/811/6589811I.jpg

どこにでもutf-8になるように配置したと思いますが、わかりません...

私のhtmlで私が使用する:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4

1 に答える 1

2

どこでも同じ文字セット (utf-8) を使用していない可能性が高いため、ある時点でデータが台無しになります。正確に何をしているかに応じて、次のポイントの1つ以上を変更/追加する必要があります(おそらくそれはSET CHARSET/mysql_set_charsetあなたが忘れたものです):

  • MySQL に utf-8 を使用するように指示します。これを行うには、これを my.cnf に追加します。

    collation_server = utf8_unicode_ci
    character_set_server = utf8
    
  • mysql を操作する前に、次の 2 つのクエリを送信します。

    SET NAMES 'utf8';
    CHARSET 'utf8';
    

    または、代わりに、接続を開いた後にphpにこれをさせます:

    mysql_set_charset('utf8', $conn); // when using the mysql_-functions
    mysqli::set_charset('utf8') // when using mysqli
    
  • データベースのデフォルトの文字セットとして UTF-8 を設定します

    CREATE DATABASE `my_db` DEFAULT CHARACTER SET 'utf8';
    
  • テーブルについても同じことを行います。

    CREATE TABLE `my_table` (
      -- ...
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
  • クライアントがブラウザーであると仮定すると、コンテンツを utf-8 および正しいヘッダーとして提供します。

    header('Content-type: text/html; charset=utf-8');
    

    ブラウザが確実に理解できるようにするには、メタタグを追加します。

    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    
  • 最後に、utf-8 を使用してフォームを送信するようブラウザに指示します。

    <form accept-charset="utf-8" ...>
    
于 2013-09-23T08:51:53.817 に答える