19

MySQL 4 (元々latin2エンコーディングに設定されていた) から MySQL 5 にデータを移動し、エンコーディングを UTF-8 に設定しました。phpMyAdminで見栄えがよく、UTF-8 で問題ありません。しかし、ウェブサイトの一部の文字の代わりにクエスチョン マークが表示されます。ウェブサイトのエンコーディングもUTF-8に設定されているので、どこに問題があるのか​​わかりません。

PHP および HTML ファイルも UTF-8 に設定されます。

どうすればこれを修正できますか?

4

10 に答える 10

31

クエリを試す

SET NAMES utf8

アプリケーションのクエリの前。

于 2009-11-10T13:01:15.817 に答える
24

私のサーバーでは、これらをPHPファイルに追加しても効果はありませんでした。

ini_set('default_charset', 'utf-8');
mysql_set_charset('utf8');
header('Content-type: text/html; charset=utf-8');

しかし、これをPHPファイルの先頭に追加すると、すべてが完全に機能しました。

$mysqli->query("SET NAMES 'utf8'");

注:utf8_general_ciデータベースでエンコーディングを使用していますがutf8_unicode_ci、同じように機能します。

于 2012-01-05T20:08:24.857 に答える
13

MySQL 接続を UTF-8 に設定してみてください。

SET NAMES 'utf8'

サーバーに他のデフォルト設定がある場合に備えて、明示的な UTF-8 ヘッダーを送信します。

header('Content-type: text/html; charset=utf-8');
于 2009-11-10T13:03:37.427 に答える
3

PHP および HTML ファイルを utf-8 に設定する必要はありません。

出力エンコーディングを UTF-8 に設定するだけで、ブラウザは適切に表示されます。

HTML の場合:

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

PHP の場合:

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

MySQL テーブルから UTF-8 の文字列を取得すると、エンコーディングを変換しない限り、ブラウザー出力までずっと UTF-8 になります。これは、ブラウザがそれを解釈する方法です。

于 2009-11-10T13:01:47.093 に答える
2

これが修正です。ヘッダーをに設定し、header ('Content-type: text/html; charset=utf-8');を使用してコンテンツを印刷しますutf8_decode($content)。それを機能させるには、2つが必要です。

于 2011-10-25T03:51:05.580 に答える
2

次のコンテンツを含む.htaccessファイルをWebサイトのルートに配置します: AddDefaultCharset UTF-8

データベースへの接続後に設定されたdbconfigで:

mysql_query("SET NAMES 'utf8'");
于 2009-12-05T12:29:45.740 に答える
2
mysql_query("SET NAMES UTF8");

「connection.php」の最後にこの行を追加すると、問題が解決しました。

私の接続ファイルの完全なコードは次のとおりです。

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_test = "localhost";
$database_test = "test";
$username_test = "username";
$password_test = "password";
$test = mysql_pconnect($hostname_test, $username_test, $password_test) or trigger_error(mysql_error(), E_USER_ERROR);
mysql_query("SET NAMES UTF8");
?>

私のデータベース照合は「utf8_general_ci」です。

ページは「dreamweaver デフォルト utf8」と「Unicode 正規化形式=C (Canonical Decomposition)」です。

于 2014-03-14T20:52:05.457 に答える
2

Web サイトで UTF-8 文字を表示し、ブラウザーにそれらをLatin-1 (またはLatin-2 )として解釈するように指示すると、次のような意味不明な表現が表示されます。ß

Web サイトで Latin-1 (または Latin-2) 文字を表示しているときに、ブラウザーにそれらを UTF-8 として解釈するように指示すると、疑問符が表示されます。

つまり、すべてを UTF-8 に切り替えた (つまり、データベース エンジン、Web サーバー、およびブラウザーに UTF-8 を使用することを伝えた) と推測されますが、実際には文字列を UTF-8 に変換していません。 .

Darkerstar が言ったことを実行します。ダンプを UTF-8 に変換し ( Notepad++で簡単に実行できます)、再度インポートします。

于 2013-01-08T14:49:00.460 に答える
1

私は最近この問題を抱えていました(あなたが抱えているのと同じ問題であることを願っています).

ダンプした SQL ファイルを UTF-8 形式に変換してからインポートします。

ところで:変換にはNotepad ++を使用しました。

于 2009-11-10T14:49:20.723 に答える
1

MySQL ですべての SQL databasetable、およびfieldを UTF-8 に設定するだけでは十分ではないようです。とてもうるさい。

エンコーディングの問題を解決するために問題を強制することになりました:

データベースを開くたびにこれを使用する必要がありました。

$db->set_charset("utf8");

そして、それはうまくいきました。ついに。

于 2015-07-07T21:58:37.110 に答える