0

ここ数時間、私は懸命に努力しましたが、解決に至りませんでした。なぜそれが起こっているのですか.... collat​​ion=utf8_general_ci のテーブルがあり、その列/フィールドの照合も utf8_general_ci に設定されています。phpmyadminからタイのデータがちゃんと見れます。しかし、このテーブルデータを取得してphpコードを使用して表示すると、???????が表示されます

クリックしてページをご覧ください。

このページでは、データベースからフェッチして表示すると、適切に表示されるが同じ単語/テキストを表示するタイ語を1つ直接書きました???

私は使っている

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

現在、そして私が試したとき

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

Direct と from Database の両方のテキスト/単語が ????? として表示されることがわかりました

4

2 に答える 2

1

MySQL 接続自体が utf8 を使用していない可能性があります。MySQL マニュアルから:

SET NAMES indicates what character set the client will use to send SQL statements 
to the server. Thus, SET NAMES 'cp1251' tells the server, “future incoming 
messages from this client are in character set cp1251.” It also specifies the 
character set that the server should use for sending results back to the client. 
(For example, it indicates what character set to use for column values if you use 
a SELECT statement.)

データベースへの接続方法 (mysql_connect/mysqli_connect または PDO) によって、手順が少し異なります。mysql_connect();またはを使用している場合mysqli_connect;は、 を実行する必要がありますmysql_query("SET NAMES utf8");。理論的には、PHP PDO を使用する場合と同じ手順を使用できますが、PDO オブジェクトの構築中に init コマンドを設定することもできます。これは、私のデータベース インタラクション クラスの例です。

$dsn = 'mysql:host='.$database_detail['dbhost'].';dbname='.$database_detail['dbname'];
$this->dbh = new PDO($dsn, $database_detail['dbuser'],
    $database_detail['dbpass'], array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => FALSE,
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
));
于 2014-03-05T15:51:09.583 に答える
0

スペイン語でこの問題が発生することがあります。コンテンツ タイプを html に設定しても、間違ったエンコーディング タイプが表示されます。

私にとってうまくいくのは、正しいフォーマットで「phpドキュメントを保存」すると問題が解決することです。

ドキュメントが Apache から切り離されたとき、または何を使用していても、読み取ったドキュメント タイプを送信していることがわかりますが、PHP コードはデータベースからコンテンツを動的に取得しています。

だから私は次のことをします:

タイ語を HTML で記述し、正しく表示されるようにします。ドキュメントを別のエンコード オプションで保存して、これを試してください。これは通常、保存ダイアログのオプションであり、表示されたら、データベースから取得してみてください。

もちろん、必要なエンコーディングでドキュメントを提供するよう Apache に強制することもできますが、これは、それらの設定にアクセスできることを前提としています。

それが役立つことを願っています。

于 2014-03-05T15:45:56.523 に答える