ホームページ > バックエンド開発 > PHPチュートリアル > php が mysql 中国語を取得すると、文字化けが表示されます。修正を手伝っていただけますか。

php が mysql 中国語を取得すると、文字化けが表示されます。修正を手伝っていただけますか。

WBOY
リリース: 2016-06-23 14:12:47
オリジナル
872 人が閲覧しました

<?phpheader("Content-type: text/html; charset=utf-8");$dsn = 'mysql:host=localhost;dbname=pw9';$db = new PDO($dsn,'root','');$rs = $db->query('SELECT * FROM pw_bbs_threads');while($row=$rs->fetch()){	print_r($row);}
ログイン後にコピー

1. ファイルエンコーディング utf8
2. MySQL エンコーディング utf8
3. ブラウザエンコーディング utf8

いろいろ調べたところ、名前を utf8 に設定するようにと言っている人がいたのですが、コードにどのように記述するかわかりません。誰か修正してもらえませんか


ディスカッションに返信(解決策)

$db->query("SET NAMES utf8");

$db->query("SET NAMES utf8");

この文はどこに置くべきですか?
$db->query("SET NAMES utf8");

それです

でも、php マニュアルでは

PDOStatement PDO::query ( string $statement )PDOStatement PDO::query ( string $statement , int $PDO::FETCH_COLUMN , int $colno )PDOStatement PDO::query ( string $statement , int $PDO::FETCH_CLASS , string $classname , array $ctorargs )PDOStatement PDO::query ( string $statement , int $PDO::FETCH_INTO , object $object )
ログイン後にコピー

が最初です。パラメータ文字列 $statement?

以上です。 。

このように書くと良いです

$db = new PDO($dsn,'root','', array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"));

$を書くのを忘れないでくださいdb-> ;query("SET NAMES utf8"); そして、何か問題が発生しました



このように書く方が良いです
$db = new PDO($dsn,'root','', array(PDO::MYSQL_ATTR_INIT_COMMAND) => "set names utf8 "));

$db->query("SET NAMES utf8"); を書くことを忘れないでください

ありがとうございます、うまくいきます。 php.net で PDO クラスを確認したところ、クラスの概要情報しかありませんでした (クラスメソッドが満載ですが、PDO::MYSQL_ATTR_INIT_COMMAND などのクラスの静的変数はありません。なぜできないのですか)。どこで見れますか?

マニュアルに載ってないの?
事前定義された定数
次の定数は、この拡張モジュールによって定義されるため、この拡張モジュールが PHP にコンパイルされるか、実行時に動的にロードされた後にのみ有効になります。

PDO_PARAM_BOOL (整数)
ブール データ型を表します。

PDO_PARAM_NULL (整数)
SQL NULL データ型を表します。

PDO_PARAM_INT (整数)
SQL INTEGER データ型を表します。

PDO_PARAM_STR (整数)
を表しますSQL CHAR、VARCHAR、またはその他の文字列データ型

PDO_PARAM_LOB (整数)
SQL ラージ オブジェクト データ型を表します

PDO_PARAM_INPUT_OUTPUT (整数)
パラメーターが、ストアド プロシージャでは、この値と明示的な PDO_PARAM_* データ型をビット単位で論理和する必要があります。

PDO_FETCH_LAZY (整数)
フェッチ メソッドが、結果で返される列名に対応する変数名を持つオブジェクトとして各行を返すことを指定します。 PDO_FETCH_LAZY は、アクセス時にオブジェクト変数名を作成します。

PDO_FETCH_ASSOC (整数)
結果セットに返される列名によってインデックスが付けられた配列としてフェッチ メソッドが各行を返すことを指定します。同じ名前の複数の列の場合、PDO_FETCH_ASSOC は列名ごとに 1 つの値のみを返します。

PDO_FETCH_NAMED (整数)
フェッチ メソッドが、対応する結果セットで返される列名によってインデックス付けされた配列として各行を返すことを指定します。結果セットに同じ名前の複数の列が含まれる場合、PDO_FETCH_NAMED は列名ごとに値の配列を返します

PDO_FETCH_NUM (整数)
フェッチ メソッドが、対応するメソッドで返される列番号でインデックス付けされた配列として各行を返すことを指定します。

PDO_FETCH_BOTH (整数)
フェッチ メソッドが、対応する結果セットで返される列名と列番号の両方でインデックス付けされた配列として各行を、列 0 から開始して返すことを指定します。

PDO_FETCH_OBJ (整数)
フェッチ メソッドが結果セットで返される列名に対応するプロパティ名を持つオブジェクトとして各行を返すことを指定します。

PDO_FETCH_BOUND (整数)
フェッチ メソッドが TR UE を返し、結果セット内の列の値を、PDOStatement::bindParam() または PDOStatement::bindColumn() メソッドでバインドされた PHP 変数に設定します。

PDO_FETCH_COLUMN (整数)
フェッチ メソッドが返すことを指定します。結果セットの次の行から要求された 1 つの列のみ

PDO_FETCH_CLASS (整数)
フェッチ メソッドが要求されたクラスの新しいインスタンスを返し、列をクラス内の名前付きプロパティにマッピングすることを指定します。 (整数)
フェッチ メソッドがリクエストされたクラスの既存のインスタンスを更新し、クラス内の名前付きプロパティに列をマッピングすることを指定します。 

PDO_FETCH_FUNC (整数)

PDO_FETCH_GROUP (整数)

PDO_FETCH_UNIQUE (整数)

PDO_FETCH_CLASSTYPE (整数)

PDO_ATTR_AUTOCOMMIT (整数) ger)
この値が FALSE の場合、PDO は接続でトランザクションが開始されるように自動コミットを無効にしようとします。 

PDO_ATTR_PREFETCH (整数)
プリフェッチ サイズを設定すると、アプリケーションの速度とメモリ使用量のバランスをとることができます。 すべてのデータベースとドライバーの組み合わせがプリフェッチ サイズの設定をサポートしているわけではありません。 

PDO_ATTR_TIMEOUT (整数)
データベースとの通信のタイムアウト値を秒単位で設定します。 

PDO_ATTR_ERRMODE (整数)

PDO_ATTR_SERVER_VERSION (整数)

PDO_ATTR_CLIENT_VERSION (整数)

PDO_ATTR_SERVER_INFO (整数)

R_CONNECTION_STATUS(整数)

PDO_ATTR_CASE(整数)
列名を PDO_CASE_* 定数で指定された特定のケースに強制します。 

PDO_ATTR_CURSOR_NAME (整数)

PDO_ATTR_CURSOR (整数)

PDO_ATTR_DRIVER_NAME (文字列)
ドライバーの名前を返します。 

PDO_ATTR_ORACLE_NULLS (整数)
空の文字列を SQL NULL 値に変換します。 

PDO_ATTR_PERSISTENT (整数)
新しい接続を作成するのではなく、永続的な接続をリクエストします。 

PDO_ATTR_FETCH_CATALOG_NAMES (整数)
結果セットで返される各列名の前に、含まれるカタログ名を追加します。 カタログ名と列名は小数点(.)文字で区切られています。 

PDO_ATTR_FETCH_TABLE_NAMES (整数)
結果セットで返される各列名の前に、それを含むテーブル名を追加します。 テーブル名と列名は小数点(.)文字で区切られます。 

PDO_ERRMODE_SILENT (整数)
エラーが発生した場合でも、エラーまたは例外を発生させません。 開発者はエラーを明示的にチェックすることが期待されます。 これがデフォルトのモードです。 

PDO_ERRMODE_WARNING (整数)
エラーが発生した場合、PHP E_WARNING メッセージを発行します。 

PDO_ERRMODE_EXCEPTION (整数)
エラーが発生した場合は PDOException をスローします。 

PDO_CASE_NATURAL (整数)
データベース ドライバーによって返された列名をそのままにしておきます。 

PDO_CASE_LOWER (整数)
列名を強制的に小文字にします。 

PDO_CASE_UPPER (整数)
列名を強制的に大文字にします。 

PDO_FETCH_ORI_NEXT (整数)
結果セット内の次の行をフェッチします。 スクロール可能なカーソルの場合にのみ有効です。 

PDO_FETCH_ORI_PRIOR (整数)
結果セットの前の行をフェッチします。 スクロール可能なカーソルの場合にのみ有効です。 

PDO_FETCH_ORI_FIRST (整数)
結果セットの最初の行をフェッチします。 スクロール可能なカーソルの場合にのみ有効です。 

PDO_FETCH_ORI_LAST (整数)
結果セットの最後の行をフェッチします。 スクロール可能なカーソルの場合にのみ有効です。 

PDO_FETCH_ORI_ABS (整数)
結果セットから行番号ごとにリクエストされた行を取得します。 スクロール可能なカーソルの場合にのみ有効です。 

PDO_FETCH_ORI_REL (整数)
結果セット内のカーソルの現在の位置からの相対位置によって、要求された行をフェッチします。 スクロール可能なカーソルの場合にのみ有効です。 

PDO_CURSOR_FWDONLY (整数)
前方専用カーソルを備えた PDOStatement オブジェクトを作成します。 これにより、アプリケーションのパフォーマンスが向上する可能性がありますが、PDOStatement オブジェクトが結果セットから順方向に一度に 1 行ずつフェッチするように制限されます。 

PDO_CURSOR_SCROLL (整数)
スクロール可能なカーソルを備えた PDOStatement オブジェクトを作成します。 PDO_FETCH_ORI_* 定数を渡して、結果セットからフェッチされた行を制御します。 

PDO_ERR_NONE (文字列)
SQLSTATE '00000' に対応し、SQL ステートメントがエラーや警告なしに正常に発行されたことを意味します。 

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート