phpとmysqlの中でuft-8中国語の符号化の文字化のいくつかの解決方法
3569 ワード
PHPページ回転UTF-8符号化問題
1.コードに行を追加します.
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");
プログラムによるインスタンス文字の切り取り方法
MYSQLデータベースがUTF-8符号化を使用する問題
1.phpmyadminでデータベースとデータテーブルを作成する
データベースを作成するときは、「整理」を「utf 8_general_ci」に設定してください.
または実行文:
データテーブルを作成する場合:このフィールドが中国語を格納している場合、「整理」を「utf 8_general_ci」に設定する必要があります.
このフィールドが英語または数字を格納している場合は、デフォルトでいいです.
対応するSQL文(例:
2.PHPでデータベースを読み書きする
データベース接続後:
2行追加:
MYSQLデータベースを正常に読み書きできます.
使用するappserv-win 32-2.5.10で作った環境は、このパッケージを入れるときにデフォルトのutf 8で符号化されます.
データベース接続ファイルを書くときは、次のように書きます.
ページを作成するときは、次のことに注意してください.
これにより、データベースの中国語を入力しても、ページが表示されても、正常になります.
DW CS 4版では、デフォルトで生成されているのもutf 8ページです.
同様に、データベース接続ファイルの書き込みを開始すると、次のようになります.
そのページも次のようになります.
まとめて、最後に主にページコードを統一すれば、文字化けの問題を簡単に解決することができます.特にmysql_query()というset namesの設定は、ページおよびデータベースの符号化統計と1つでなければなりません.
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つでなければなりません.