For garbled this problem almost all of the PHP developers have encountered, we are mainly introduced below the PHP file garbled and page garbled and PHP MySQL database connection garbled solution.
-
-
PHP page UTF-8 encoding problem
1. Add a line to the beginning of the code:
The code is as follows
Header ("Content-type:text/html;charset=utf-8");
2.PHP file Encoding Problem
Click on the Editor's menu: "File"-> "Save As", you can see the current file encoding to ensure that the file is encoded as: UTF-8,
If ANSI, you need to change the encoding to: UTF-8.
3.PHP file Header BOM problem:
The PHP file must not have a BOM label
Otherwise, the session cannot be used and has a similar hint:
Warning:session_start () [function.session-start]: Cant send session cache limiter-headers already sent
This is because when the session_start () is executed, the entire page cannot have output, but when a BOM tag exists on the previous PHP page,
PHP is the BOM label as output, so it went wrong!
So the PHP page must delete the BOM label
Delete this BOM label method:
1. You can open the file with Dreamweaver and save it again, that is, you can remove the BOM label!
2. You can open the file with EditPlus, and in the menu "preferences"-> "file"-> "UTF-8 identity", set to: "Always delete signature",
Then save the file, that is, you can remove the BOM label!
4.PHP Save the file as an attachment, the UTF-8 encoding problem:
PHP saves the file as an attachment, and the filename must be GB2312 encoded,
Otherwise, if the file name in Chinese, will be displayed garbled:
If your PHP itself is a file in UTF-8 encoded format,
You need to convert the filename variable from UTF-8 to GB2312:
Iconv ("UTF-8", "GB2312", "$filename");
Using program to instance character interception method
The code is as follows
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);
}
The problem of using UTF-8 encoding in MySQL database
1. Create databases and datasheets with phpMyAdmin
When you create a database, set the collation to: Utf8_general_ci
Or execute the statement:
The code is as follows
CREATE DATABASE ' dbname ' DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci;
When you create a datasheet: If the field is for Chinese, you need to set the collation to: Utf8_general_ci.
If the field is stored in English or a number, the default is OK.
The corresponding SQL statement, for example:
The code is as follows
CREATE TABLE ' Test ' (
' ID ' INT not NULL,
' Name ' VARCHAR CHARACTER SET UTF8 COLLATE utf8_general_ci not NULL,
PRIMARY KEY (' id ')
) ENGINE = MYISAM;
2. Read and write database in PHP
After connecting to the database:
The code is as follows
[hide] $connection = mysql_connect ($host _name, $host _user, $host _pass);
Add two lines:
The code is as follows
mysql_query ("Set character set ' UTF8 '");/Read Library
mysql_query ("Set names ' UTF8 ')"//write Library
You can read and write the MySQL database normally.
Use the appserv-win32-2.5.10 to do the environment, when loading this package with the default UTF8 encoding.
When writing a database connection file, write:
The code is as follows
$conn = mysql_connect ("$host", "$user", "$password");
mysql_query ("SET NAMES ' UTF8 '");
mysql_select_db ("$database", $conn);
And then when you do the page, pay attention to this sentence:
The code is as follows
<meta http-equiv= "Content-type" content= "HTML; Charset=utf-8 "/>
This will be normal if the input database is in Chinese or the page is displayed.
In the DW CS4 Edition, the default generation is also the UTF8 page.
Similarly, if you start by writing a database connection file:
The code is as follows
mysql_query ("SET NAMES ' GBK '");
The page should also be changed accordingly:
The code is as follows
<meta http-equiv= "Content-type" content= html; charset=gb2312 "/>
Summary, finally, the main page coding to be unified can be very convenient to solve the garbled problem, especially in mysql_query () the Set names settings must and the page and the database code statistics one can.