2

私はそのような問題を抱えています。最初にmysqlテーブルを見てください=>

CREATE TABLE IF NOT EXISTS users(
id int(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(40) CHARSET utf8 COLLATE 'utf8_unicode_ci' NOT NULL,
surname VARCHAR(40) CHARSET utf8 COLLATE 'utf8_unicode_ci' NOT NULL,
);

データは正常に保存されていますが、この情報を .php ファイル (エンコーディングも utf8) に取得しようとすると、まだ疑問符 (?????) が表示されます。どうすれば解決できますか?

アップデート

何かうまくいかない。だから私は2つのphpファイルを持っています。1つはデータベースから情報を取得するクラスを定義したclassA.phpファイルで、このファイル(classA.php)を表示したいdefault.phpファイルに含めましたデータ。私は上に書かれているのとまったく同じ表を持っています、そして私は書いています

header('Content-Type: text/html; charset=UTF-8');

default.php の最初の行ですが、それでも機能しません。アドバイスありがとうございます :))

2回目の更新

このスクリプトは classA.php ファイルにあり、そのエンコーディングは default.php ファイルエンコーディングのようにデフォルトです。これを最初の行のdefault.phpファイルに追加しました

header("Content-Type: text/html; charset=UTF-8");

しかし、それでも機能しません。

3回目の更新

SQL =>

create table ok(
id int(2) not null auto_increment primary key,
name varchar(20) charset utf8 not null);

およびphpファイル

<?php
 header('Content-Type: text/html; charset=UTF-8');
 ?>
 <!DOCTYPE html>
 <html>
 <head>
        <title>hello</title>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
     <body>


     <?php
        $con = mysqli_connect("host","user","pass","db");

       if (mysqli_connect_errno()==0){
       if ($r = mysqli_query($con,"SELECT * FROM ok")){
    mysqli_set_charset($con,"utf8");
    while ($d = mysqli_fetch_assoc($r)){
        echo $d['name'] . "<br>";
           }
           }
          }

            if (isset($con)){
               mysqli_close($con);
             }
             ?>


               </body>
               </html>

OKテーブルにこれを挿入しました=>

insert into ok(name) values("one"),("ერთი"),("two"),("ორი");

PS。特殊文字はグルジア語です:)

そして、英語の文字は問題なく、グルジア語には疑問符が付きます:(

とにかくうまくいきません:(

4

3 に答える 3

7

PHP ファイルが UTF-8 であるという事実は、必ずしもデータベースとの間で送受信されるデータも UTF-8 であるとは限りません。

使用している拡張機能については言及していませんが、次のとおりです。

  • mysql用_mysql_set_charset($link,'utf8');

  • mysqli使用するmysqli->set_charset('utf8')場合、または上記と同じmysqli_

  • PDOの場合、接続時にcharset:utf8DSN文字列に含めます。

于 2012-07-13T09:48:09.867 に答える
3

HTML utf8 エンコーディングを宣言します。

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

および/またはヘッダーでエンコーディングを転送します。

header('Content-Type: text/html; charset=UTF-8');
于 2012-07-13T09:40:38.293 に答える
1

試してみてください

htmlentities($row['name'],ENT_QUOTES);

見るhtmlentities

于 2012-07-13T09:41:27.820 に答える