function escape($str)
{
preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/"翻譯社$str翻譯社$r);
$ar = $r[0];
foreach($ar as $k=>$v)
{
if(ord($v[0]) < 128)
$ar[$k] = rawurlencode($v);
else
$ar[$k] = "%u".bin2hex(iconv("UTF-8","UCS-2",$v));
}
return join(""翻譯社$ar);
}設定頁面的題目和編碼方式屬性
設定 Apache 送出頁面預設語系 UTF-8 (對照不建議用此方法)
三.MYSQL資料庫利用UTF-8編碼的問題
1.用phpmyadmin建立資料庫和資料表
建立資料庫的時候,請將“收拾整頓”設置為:“utf8_general_ci”
或履行語句:
CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
建立資料表的時刻:假如是該欄位是寄存中文的話,則需要將“整頓”設置為:“utf8_general_ci”,
假如該欄位是寄存英文或數位的話,預設就能夠了。
響應的SQL語句,例如:PHP亂碼問題,UTF-8亂碼常見問題小結
- 於 HTML head 指定此頁編碼為 UTF-8
2.用PHP讀寫資料庫
在毗鄰資料庫以後:
[hide]$connection = mysql_connect($host_name翻譯社 $host_user翻譯社 $host_pass);
插足兩行:一.HTML頁面轉UTF-8編碼問題
1.在head後,title前插手一行:
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
挨次不克不及錯,一定要在
顯示的標題有多是亂碼!
2.html檔編碼問題:
點擊編纂器的功能表:“檔”->“另存為”,可以看到當前檔的編碼,確保檔編碼為:UTF-8,
如果是ANSI,需要將編碼改成:UTF-8翻譯
3.HTML文件頭BOM問題:
將檔從其他的編碼轉換成UTF-8編碼時,有時候會在檔的最入手下手加上一個BOM標籤,
在個BOM標籤可能會致使流覽器在顯示中文的時刻出現亂碼。
刪除這個BOM標籤的方法:
1.可以用Dreamweaver打開檔,並從頭保留,即可以去除BOM標籤!
2.可以用EditPlus打開檔,並在功能表“首選項”->“檔”->"UTF-8標識",設置為:“總是刪除簽名”,
然後保存檔,便可以去除BOM標籤!
4.WEB伺服器UTF-8編碼問題:
假如翻譯公司按以上所列的步調做了,仍是有中文亂碼問題,
請查抄你的所利用的WEB伺服器的編碼問題
如果你使用的是Apache,請將設定檔裡的:charset 設成:utf-8(這裡僅列出方式,具體魄式請參考apache的設定檔)
如果你使用的是Nginx,請將nginx.conf裡的:charset 設成 utf-8,
具體找到 "charset gb2312;"或近似的語句,改成:“charset utf-8;”翻譯
二.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不克不及利用的情況,並有近似的提醒:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
這是因為,在履行session_start() 的時辰,全部頁面不克不及有輸出,但是當由於前PHP頁面存在BOM標籤,
PHP把這個BOM標籤當做是輸出了,所以就失足了!
所以PHP頁面必然要刪除BOM標籤
刪除這個BOM標籤的方式:
1.可以用Dreamweaver打開檔,並從新留存,便可以去除BOM標籤!
2.可以用EditPlus打開檔,並在功能表“首選項”->“檔”->"UTF-8標識",設置為:“老是刪除簽名”,
然後留存檔,即可以去除BOM標籤!
4.PHP以附件情勢留存檔的時刻,UTF-8編碼問題:
PHP以附件情勢留存檔,檔案名必需是GB2312編碼,
不然,假如檔案名中有中文的話,將是顯示亂碼:
假如翻譯公司的 PHP自己是UTF-8編碼花式的檔,
需要將檔案名變數由UTF-8轉成GB2312:
iconv("UTF-8", "GB2312", "$filename");
5.截斷顯示文章題目時,泛起亂碼或“?”問號的問題:
一般文章題目很長的時刻,會顯示一部份題目,會對文章題目進行截斷,
由於一個UTF-8編碼花樣的中文字元會佔用3個字元寬度,
截取題目的時刻,有時會只截取到一個中文字元的1個字元或2字元寬度,
沒截取完全,將泛起亂碼或“?”問號的情形,
用下面的函數截取題目,就不會有問題:【出處】http://www.dotblogs.com.tw/jellycheng/archive/2010/11/18/19533.aspx
- 從頭載入
- 可以讓您轉換現有文件的編碼體式格局,或是以新的編碼方式從新開啟文件。
- Unicode 標準化格式
- 只會在您拔取 UTF-8 看成文件編碼體式格局時啟用翻譯Unicode 標準化格式有四種類型。最主要的一種是「標準化花式 C」,因為這是全球資訊網中字元模子 (Character Model) 最經常使用的花樣。為求完整起見,Adobe 也供應其餘三種 Unicode 標準化格式翻譯
- 包括 Unicode 簽名 (BOM)
- 可讓您在文件中包括位元挨次標識表記標幟 (BOM)翻譯BOM 是位於文字檔開首處的 2 到 4 個位元組,用來辨認檔案為 Unicode,並且若有 BOM 的話,也會指出後續位元組的位元順序翻譯由於 UTF-8 沒有位元按次,所以加入 UTF-8 BOM 是選擇性的動作。但對 UTF-16 和 UTF-32 而言則是需要的。
# 不過建議這行要包在 Directory 或 VirtualHost 內翻譯社 才不會影響到其它網頁.
<Directory "/var/*/blog">
addDefaultCharset UTF-8
</Directory>
<VirtualHost *>
addDefaultCharset UTF-8
</VirtualHost>
CREATE TABLE `test` (
`id` INT NOT NULL ,
`name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL 翻譯社
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;在 Unicode 中,某些字元看起來很類似,但卻能以分歧體式格局貯存於文件中。例如,「ë」(e 母音轉變) 可以默示為「e 母音變化」單一字元,也能夠透露表現為「一般拉丁字母 e」+「組合母音變化」兩個字元。Unicode 組合字元是與前一個字元組合一路使用的字元,是以母音變化可能呈現在「拉丁字母 e」的上面翻譯這兩種花式的印刷成效看起來完全一樣,但是貯存至檔案的內容互不相同。
若PHP程式在碰到繁體中文顯示網頁時,泛起亂碼的解決方式:
可以遵照下列步調下去一一問題排解,
1.查抄php.ini文件裡面的設定
php.ini路徑:C:\Windows\php.ini
搜索到default_charset以後,將文件內容改為
default_charset="utf-8"
並將前面的分號";"刪除
若利用big5則將utf-8改為big5
2.查抄meta標籤
<meta http-equiv="content-type" content="text/html; charset=utf-8">
若使用big5則將utf-8改為big5
3.檢查my.ini文件裡面的設定
my.ini路徑:在MySql安裝路徑下便可找到
搜索到default-character-set以後,將文件內容改為
default-character-set = utf8
若利用big5則將uft-8改為big5
4.若是因為MySql裡面的繁體中文致使亂碼,可直接在程式碼指定語系
具體內容可參考此篇PHP 貫穿連接MySQL資料庫語法以及從程式碼解決中文亂碼的問題
5.若是html檔案,且已設定meta標籤內的charset,照樣無法解決者
將html檔案以記事本開啟,
開啟以後,另存新檔,在最下面編碼的地方該改為 UTF-8複製代碼代碼以下:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>JS讀cookie的時刻,用unescape解碼,
然後就解決cookie中有中文亂碼的問題了翻譯
2.外部JS檔UTF-8編碼問題
當一個HTML頁面或則PHP頁面包括一個外部的JS檔時,
假如HTML頁面或則PHP頁面是UTF-8編碼花樣的檔,
外部的JS檔一樣要轉成UTF-8的檔,
不然將出現,沒有包括不成功,挪用函數時沒有反應的環境。
點擊編纂器的功能表:“檔”->“另存為”,可以看到當前檔的編碼,確保檔編碼為:UTF-8,
假如是ANSI,需要將編碼改成:UTF-8。
五.FLASH相幹的UTF-8編碼問題
FLASH內部對所有字串,預設都是以UTF-8處置
1.FLASH讀文普通本檔(txt,html)
要將文字檔的編碼存為UTF-8
點擊編纂器的功能表:“檔”->“另存為”,可以看到當前檔的編碼,確保檔編碼為:UTF-8,
若是是ANSI,需要將編碼改成:UTF-8。
2.FLASH讀XML文件 引用自: http://blog.xuite.net/metafun/life/203344265-PHP%E4%BA%82%E7%A2%BC%E5%95%8F%E9%A1%8C%EF%BC%8CUTF-8%E有關各國語文翻譯公證的問題歡迎諮詢天成翻譯公司02-77260931
- Jul 13 Fri 2018 19:17
PHP亂碼問題,UTF
close
文章標籤
全站熱搜
留言列表