phpとmysqlの中でuft-8中国語の符号化の文字化のいくつかの解決方法

3569 ワード

PHPページ回転UTF-8符号化問題
1.コードに行を追加します.
 
  
header("Content-Type: text/html;charset=utf-8");

2.PHPファイル符号化の問題
エディタのメニューをクリックします:[ファイル]->[名前を付けて保存]をクリックすると、現在のファイルのエンコードが表示され、ファイルが:UTF-8にエンコードされていることを確認できます.
ANSIの場合は、コードをUTF-8に変更する必要があります.
3.PHPファイルヘッダBOM問題:
PHPファイルには必ずBOMタグが付いてはいけません
それ以外の場合、セッションが使用できない場合があり、同様のヒントがあります.
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
なぜなら、セッションが実行されているからです.start()の場合、ページ全体に出力はできませんが、前PHPページにBOMタグがあるため、
PHPはこのBOMタグを出力だと思っていたのでエラー!
だからPHPページは必ずBOMタグを削除します
このBOMタグを削除する方法:
1.Dreamweaverでファイルを開き、再保存することができます.BOMタグを削除できます.
2.EditPlusでファイルを開き、メニューの「プリファレンス」->「ファイル」->「UTF-8 ID」で、「常に署名を削除」に設定できます.
その後ファイルを保存して、BOMタグを削除することができます!
4.PHPファイルを添付ファイルとして保存する場合、UTF-8コードの問題:
PHPは添付ファイル形式でファイルを保存し、ファイル名はGB 2312コードでなければならない.
そうでなければ、ファイル名に中国語がある場合は、文字化けして表示されます.
PHP自体がUTF-8エンコード形式のファイルであれば、
ファイル名変数をUTF-8からGB 2312に変換する必要があります.
iconv("UTF-8", "GB2312", "$filename");
プログラムによるインスタンス文字の切り取り方法
 
  
function utf8_substr($str,$len)
{
  for($i=0;$i  {
    $temp_str=substr($str,0,1);
    if(ord($temp_str) > 127){
      $i++;
    if($i      $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でデータベースとデータテーブルを作成する
データベースを作成するときは、「整理」を「utf 8_general_ci」に設定してください.
または実行文:
 
  
CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

データテーブルを作成する場合:このフィールドが中国語を格納している場合、「整理」を「utf 8_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 'utf8'");//
mysql_query("set names 'utf8'");//

MYSQLデータベースを正常に読み書きできます.
使用するappserv-win 32-2.5.10で作った環境は、このパッケージを入れるときにデフォルトのutf 8で符号化されます.
データベース接続ファイルを書くときは、次のように書きます.
 
  
$conn = mysql_connect("$host","$user","$password");
mysql_query("SET NAMES 'UTF8'");
mysql_select_db("$database",$conn);

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


これにより、データベースの中国語を入力しても、ページが表示されても、正常になります.
DW CS 4版では、デフォルトで生成されているのもutf 8ページです.
同様に、データベース接続ファイルの書き込みを開始すると、次のようになります.
 
  
mysql_query("SET NAMES 'GBK'");

そのページも次のようになります.
 
  


まとめて、最後に主にページコードを統一すれば、文字化けの問題を簡単に解決することができます.特にmysql_query()というset namesの設定は、ページおよびデータベースの符号化統計と1つでなければなりません.