3

私のテーブルはこんな感じです-

province_id int(11)                  
province_title char(200) utf8_general_ci 
parent int(8) int(2)

phpMyadmin (php ページからではなく) から直接大量のデータを挿入しました。しかし、それらのデータを取得してphpページに表示すると、特殊文字に問題があります。

お気に入り-

Québec shows -  Qu�bec.

私のhtmlヘッダーは次のようになります-

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

データの挿入中に問題が発生した可能性があると思います。これらのデータをphpmyadminで変換するにはどうすればよいですか? 助けはありますか?

4

4 に答える 4

4

どこでも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" ...>
    
于 2012-05-23T14:22:33.057 に答える
0

問題は、おそらく MySQL への接続の文字セットです。mysql_set_charsetまたはmysqli::set_charsetを参照してください。

于 2012-05-23T14:21:49.560 に答える
0

MySQL サーバーは、デフォルトでクライアントからの UTF-8 エンコーディングを期待するように構成されていません。

したがって、次を使用して接続を開く必要があります

mysql_query("SET NAMES utf8");   

PDO を使用している場合は、

$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
); 

$dbh = new PDO($dsn, $username, $password, $options);
于 2012-05-23T14:22:13.387 に答える
0

phpmyadmin でデータを確認したときに問題がないように見える場合は、ファイル自体のテキスト エンコンディングに問題がある可能性があります。

Eclipse (Edit » Set Encoding) または Notepad++ (Encoding) を使用して、ファイルのエンコーディングが正しいことを確認します。

于 2012-05-23T14:22:54.467 に答える