ホームページ バックエンド開発 PHPの問題 PHPのデータベースクエリで文字化けが発生する問題を解決する方法

PHPのデータベースクエリで文字化けが発生する問題を解決する方法

Jul 24, 2020 am 09:57 AM
php データベース

php データベース クエリの文字化けの解決策: まず、MySQL コマンド ライン クライアントでデータベースを作成し、次に、mysql が複数のエンコード データベースを同時にサポートできるようにデータベースの文字セットを指定し、最後に作成したデータベースを操作します。 。

PHPのデータベースクエリで文字化けが発生する問題を解決する方法

文字化けの解決策

推奨: "PHP チュートリアル "

コードの文字化けの問題を解決するには、まずデータベースで使用されているエンコーディングを把握する必要があります。指定しない場合、デフォルトは latin1 です。

最もよく使用する 3 つの文字セットは、gb2312、gbk、および utf8 です。

では、データベースの文字セットを指定するにはどうすればよいでしょうか?以下も gbk

[MySQL コマンド ライン クライアントでデータベースを作成する]

mysql> CREATE TABLE `mysqlcode` (
    -> `id` TINYINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    -> `content` VARCHAR( 255 ) NOT NULL
    -> ) TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;
Query OK, 0 rows affected, 1 warning (0.03 sec)
mysql> desc mysqlcode;
+---------+-----------------------+------+-----+---------+----------------+
| Field   | Type                  | Null | Key | Default | Extra          |
+---------+-----------------------+------+-----+---------+----------------+
| id      | tinyint(255) unsigned | NO   | PRI |         | auto_increment |
| content | varchar(255)          | NO   |     |         |                |
+---------+-----------------------+------+-----+---------+----------------+
2 rows in set (0.02 sec)
ログイン後にコピー

の例です。次の TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;

は、指定したデータベースの文字を設定し、COLLATE (照合順序) を実行すると、mysql が複数のエンコード データベースを同時にサポートできるようになります。

もちろん、次の手順でデータベースの文字セットを変更することもできます。

alter database da_name default character set 'charset'.
ログイン後にコピー

クライアントはそれを gbk 形式で送信し、次の構成を使用できます。

SET character_set_client='gbk'
SET character_set_connection='gbk'
SET character_set_results='gbk'
ログイン後にコピー

この設定は、SET NAMES 'gbk' と同等です。

今作成したデータベースを操作してください

mysql> use test;
Database changed
mysql> insert into mysqlcode values(null,'php爱好者');
ERROR 1406 (22001): Data too long for column 'content' at row 1
ログイン後にコピー

文字セットが gbk として指定されていないため、挿入中にエラーが発生しました

mysql> set names 'gbk';
Query OK, 0 rows affected (0.02 sec)
ログイン後にコピー

指定された文字セットは gbk です

mysql> insert into mysqlcode values(null,'php爱好者');
Query OK, 1 row affected (0.00 sec)
ログイン後にコピー

挿入成功

mysql> select * from mysqlcode;
+----+-----------+
| id | content   |
+----+-----------+
| 1  | php爱好着 |
+----+-----------+
1 row in set (0.00 sec)
ログイン後にコピー

文字セットgbkを指定せずに読み込むと以下のように文字化けも発生します

mysql> select * from mysqlcode;
+----+---------+
| id | content |
+----+---------+
| 1  | php???  |
+----+---------+
1 row in set (0.00 sec)
ログイン後にコピー

[phpmyadminでデータベースを作成し文字セットを指定]

テーブル タイプは、選択する必要があります。ここでは MyISAM (全文​​検索をサポート) を選択します。

gbk 文字セットである gbk_chinese_ci を整理して選択します。

gbk_bin 簡体字中国語、バイナリ。 gbk_chinese_ci 簡体字中国語、大文字と小文字は区別されません。

作成したばかりのデータベースにデータベースを挿入します

もう一度参照すると、コードが文字化けしていることがわかります

なぜですか?これは、データベースが gbk 文字セットであり、操作中にそれを gbk として指定しなかったためです。

データベースのホームページに戻る

mysql 接続校正用のデフォルトの latin1_bin を確認できます。これを gbk_chinese_ci

に変更し、データを挿入します。ほら、これは正常です

[データベースの文字化けコードを読み取るphpの解決策]

データベースmysqlcodeを例として取り上げます

<?php 
$conn = mysql_connect("localhost","root","89973645"); 
mysql_query("set names &#39;gbk&#39;");//这就是指定数据库字符集,一般放在连接数据库后面就系了 
mysql_select_db("test"); 
 
$sql = "select * from mysqlcode"; 
$result = mysql_query($sql,$conn); 
 
?> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>mysql 字符编码</title> 
</head> 
 
<body> 
<table width="300" height="32" border="1" align="center" cellpadding="0" cellspacing="0"> 
 <tr> 
    <td width="71" align="center">id</td> 
    <td width="229" align="center">内容</td> 
 </tr> 
 <?php while($row = mysql_fetch_assoc($result)){ 
 echo "   
 <tr> 
    <td align=/"center/">".$row[&#39;id&#39;]."</td> 
    <td>".$row[&#39;content&#39;]."</td> 
 </tr>"; 
}?>   
</table> 
</body> 
</html> 
<?php mysql_free_result($result);?>
ログイン後にコピー

mysql_query("set names ' gbk '"); コメントアウトしてください、確実な場合は文字化けします

その文を追加すると正常に戻ります

一文

あなたのエンコーディングは何ですかデータベースを使用しますか? データベース名「エンコーディング」を操作する前に設定してください;

以上がPHPのデータベースクエリで文字化けが発生する問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP サービス CakePHP サービス Sep 10, 2024 pm 05:26 PM

この章では、CakePHP で利用できる認証プロセスに関する情報を扱います。

See all articles