ホームページ  >  記事  >  バックエンド開発  >  PHPでデータベースに書き込まれる中国語が文字化けする問題を解決する方法

PHPでデータベースに書き込まれる中国語が文字化けする問題を解決する方法

藏色散人
藏色散人オリジナル
2021-09-25 10:29:263680ブラウズ

PHP によってデータベースに書き込まれる文字化けする中国語の解決策: 1. データベースを作成し、「utf8_general_ci」エンコーディングを設定します。 2. PHP を使用してデータベースの読み取りと書き込みを行い、「mysql_query("set names 'utf8'");" 以上です。

PHPでデータベースに書き込まれる中国語が文字化けする問題を解決する方法

この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

方法php書き込みを解決する データベースの中国語文字化けの問題?

PHPでデータベースに書き込む中国語文字化けの問題

#変換の問題PHP ページを UTF-8 エンコードに変換します

1。コードの先頭に行を追加します:

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

2.PHP ファイルのエンコードの問題
エディタのメニューをクリックします。 [ファイル] -> [名前を付けて保存] をクリックすると、現在のファイルのエンコーディングが表示されます。ファイル エンコーディングが UTF-8、
であることを確認します。ANSI の場合は、エンコーディングを UTF-8 に変更する必要があります。
3. PHP ファイル ヘッダーの BOM の問題:
PHP ファイルには BOM タグがあってはなりません
そうしないと、セッションは使用できなくなり、同様のプロンプトが表示されます:
警告: session_start() [ function.session-start]: セッション キャッシュ リミッターを送信できません - ヘッダーはすでに送信されています
これは、session_start() を実行するとページ全体に出力ができないためですが、前の PHP ページに BOM タグが存在する場合、
PHP はこの BOM タグを出力とみなしたため、エラーが発生しました。
したがって、PHP ページで BOM タグを削除する必要があります。
この BOM タグを削除する方法:
1. Dreamweaver でファイルを開いて再保存できます。つまり、BOM タグを削除できます。 !
2. EditPlus でファイルを開き、メニューの「環境設定」->「ファイル」->「UTF-8 ID」で、「署名を常に削除する」に設定します。ファイルを保存します。つまり、BOM ラベルを削除できます。
4. PHP がファイルを添付ファイルとして保存するときの UTF-8 エンコードの問題:
PHP がファイルを添付ファイルとして保存するとき、ファイル名は GB2312 でエンコードされている必要があります。ファイル名、文字化けが表示されます:
PHP 自体が UTF-8 エンコード形式のファイルの場合、
ファイル名変数を UTF-8 から GB2312 に変換する必要があります:

iconv("UTF-8", "GB2312", "$filename");

利用プログラム 文字インターセプト方法の例を見てみましょう

function utf8_substr($str,$len) 
{ 
  for($i=0;$i<$len;$i++) 
  { 
    $temp_str=substr($str,0,1); 
    if(ord($temp_str) > 127){ 
      $i++; 
    if($i<$len){ 
      $new_str[]=substr($str,0,3); 
      $str=substr($str,3); 
      } 
    }else { 
    $new_str[]=substr($str,0,1); 
    $str=substr($str,1); 
    } 
  } 
  return join($new_str); 
}

MYSQL データベースで UTF-8 エンコーディングを使用する場合の問題

1. phpmyadmin を使用してデータベースを作成し、データ テーブル

データベースを作成するときに、「 Set "Organization" を "utf8_general_ci" に変更するか、次のステートメントを実行してください:

CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

データ テーブルを作成するとき: フィールドに中国語が格納されている場合は、次のように設定する必要があります。 「Organization」を「utf8_general_ci」、

フィールドに英語または数字が格納されている場合は、デフォルトで問題ありません。

対応する SQL ステートメント (例:

CREATE TABLE `test` ( 
`id` INT NOT NULL , 
`name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , 
PRIMARY KEY ( `id` ) 
) ENGINE = MYISAM ;

2) PHP を使用してデータベースの読み取りと書き込みを行います

データベースに接続した後:

$connection = mysql_connect($host_name, $host_user, $host_pass);

次の 2 行を追加します。

mysql_query("set character set &#39;utf8&#39;");//读库 
mysql_query("set names &#39;utf8&#39;");//写库 
//其实读写都可以只加入
mysql_query("set names &#39;utf8&#39;");

MYSQL データベースは通常どおり読み書きできます。

appserv-win32-2.5.10 を使用して作成された環境では、このパッケージのインストール時にデフォルトの utf8 エンコーディングが使用されます。

データベース接続ファイルを記述するときは、次のように記述します。

$conn = mysql_connect("$host","$user","$password"); 
mysql_query("SET NAMES &#39;UTF8&#39;"); 
mysql_select_db("$database",$conn);

次に、ページを作成するときに、次の文に注意してください:

0d6de261b2b58e239d520bc4e30c05cf

このようにして、データベースへの中国語入力やページ表示に関係なく、すべてが正常になります。

DW CS4 バージョンでは、デフォルトで utf8 ページも生成されます。
同様に、最初にデータベース接続ファイルを次のように記述すると: mysql_query("SET NAMES 'GBK'");

ページもそれに応じて変更されるはずです:

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

推奨される学習: 「

PHP ビデオ チュートリアル

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

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