網(wǎng)站開發(fā)中遇到UTF8出現(xiàn)亂碼問題_第1頁
網(wǎng)站開發(fā)中遇到UTF8出現(xiàn)亂碼問題_第2頁
網(wǎng)站開發(fā)中遇到UTF8出現(xiàn)亂碼問題_第3頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、網(wǎng)站開發(fā)中遇到的 UTF-8 出現(xiàn)亂碼的問題/bc/2021/0301/1208_4.html一個網(wǎng)站如果需要國際化,就需要將編碼從GB2312轉(zhuǎn)成UTF-8,其中有很多的問題需要注意,如果沒有轉(zhuǎn)換徹底,將會有很多的編碼問題出現(xiàn)!主要有五個方面:一. .HTML 頁面轉(zhuǎn) UTF-8 編碼問題二. PHP 頁面轉(zhuǎn) UTF-8 編碼問題三. MYSQ 數(shù)據(jù)庫使用 UTF-8 編碼的問題四 JS 相關(guān)的 UTF-8 編碼問題五.FLASH相關(guān)的UTF-8編碼問題一.HTML頁面轉(zhuǎn)UTF-8編碼問題1. 在head后,title前參加一行:meta -equiv='Content-Type&#

2、39; content='text/html; charset=utf-8' /順序不能錯,一定要在title標簽前參加,否那么如果title與/title之間有中文字符的話,顯示的標題有可能是亂碼!2. html 文件編碼問題 :確保文BOMS點擊編輯器的菜單: “文件 - “另存為 ,可以看到當(dāng)前文件的編碼, 件編碼為:UTF-8,如果是ANSI,需要將編碼改成:UTF-8。3. HTML 文件頭 BOMH 題:將文件從其他的編碼轉(zhuǎn)換成 UTF-8 編碼時,有時候會在文件的最開始加上一個 簽,在個 BOMS 簽可能會導(dǎo)致瀏覽器在顯示中文的時候出現(xiàn)亂碼。刪除這個BOMS簽的方

3、法:1. 可以用 Dreamweaver 翻開文件,并重新保存,即可以去除 BOM 標簽!2. 可以用EditPlus翻開文件,并在菜單“首選項- “文件 -"UTF-8標識設(shè)置為:“總是刪除簽名,然后保存文件,即可以去除BOh 標簽!4. WEB 月艮務(wù)器 UTF-8 編碼問題:WEB 效勞如果你按以上所列的步驟做了,還是有中文亂碼問題,請檢查你的所使用的 器的編碼問題 如果你使用的是Apache,請將配置文件里的:charset設(shè)成:utf-8(這里僅列 出方法, 具體格式請參考 apache 的配置文件 ) 。如果你使用的是 Nginx,請將nginx.conf里的:chars

4、et設(shè)成utf-8,具 體找到 "charset gb2312;" 或者類似的語句 ,改成:“charset utf- 8; 。二.PHP頁面轉(zhuǎn)UTF-8編碼問題1. 在代碼開始出參加一行:header("Content-Type: text/html;charset=utf-8");2. PHP 文件編碼問題點擊編輯器的菜單:“文件 ->“另存為 , 可以看到當(dāng)前文件的編碼 , 確保文件編碼為:UTF-8,如果是ANSI,需要將編碼改成:UTF-8。3. PHP 文件頭 BOM 問題:PHP 文件一定不可以有 BOM 標簽,否那么,會出現(xiàn) ses

5、sion 不能使用的情況,并有 類似的提示:Warning: session_start() function.session-start: Cannot send sessioncache limiter - headers already sent這是因為,在執(zhí)行 session_start() 的時候,整個頁面不能有輸出,但是當(dāng)由 于前 PHP頁面存在BOM標簽,PHP把這個BOM標簽當(dāng)成是輸出了,所以就出錯了!所以 PHP 頁面一定要刪除 BOM 標簽刪除這個 BOM 標簽的方法:1. 可以用 Dreamweaver 翻開文件,并重新保存,即可以去除 BOM 標簽!2. 可以用Edit

6、Plus翻開文件, 并在菜單“首選項-> “文件 ->"UTF-8標識",設(shè)置為:“總是刪除簽名,然后保存文件,即可以去除BOM 標簽!4. PHP 以附件形式保存文件的時候, UTF-8 編碼問題:PHP 以附件形式保存文件,文件名必須是 GB2312 編碼,否那么,如果文件名中有 中文的話,將是顯示亂碼:如果你的PHP本身是UTF-8編碼格式的文件,需要將文件名變量由UTF-8轉(zhuǎn)成GB2312 icon v("UTF-8", "GB2312", "$file name");5. 截斷顯示文章標題時,

7、出現(xiàn)亂碼或者“?"問號的問題:一般文章標題很長的時候,會顯示一局部標題,會對文章標題進行截斷,由于一 個 UTF-8編碼格式的中文字符會占用3個字符寬度,截取標題的時候,有時會 只截取到一個中文字符的1個字符或2字符寬度,沒截取完整,將出現(xiàn)亂碼或“? 問號的情況,用下面的函數(shù)截取標題,就不會有問題:fun ctio n get_brief_str($str, $max_le ngth) 一一 一 echo strle n($str) ."<br>" if(strle n(:$str) > $max_le n gth)$check_ num = 0

8、;for($i=0; $i < $max_length; $i+)if (ord($str$i) > 128)$check_ nu m+;-if($check_num % 3 = 0)$str = substr($str, 0, $max_le ngth)."." else if($check_num % 3 = 1)$str = substr($str, 0, $max_le ngth + 2).""else if($check_num % 3 = 2)$str = substr($str, 0, $max_le ngth + 1).&qu

9、ot;." _return $str;.MYSQI數(shù)據(jù)庫使用UTF-8編碼的問題1.用phpmyadmin創(chuàng)立數(shù)據(jù)庫和數(shù)據(jù)表創(chuàng)立數(shù)據(jù)庫的時候,請將“整理"設(shè)置為:“utf8_ge neral_ci "或執(zhí)行語句:CREATE DATABASE 'db name' DEFAULT CHARACTER SET utf8 COLLATEutf8_ge n eral_ci;創(chuàng)立數(shù)據(jù)表的時候:如果是該字段是存放中文的話,那么需要將“整理"設(shè)置為:“ utf8_ge neral_ci ",如果該字段是存放英文或數(shù)字的話,默認就可以了。相應(yīng)的

10、SQL語句,例如:CREATE TABLE 'test'('id' INT NOT NULL,'n ame' VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_ge neral_ci NOTNULL ,PRIMARY KEY ( 'id')ENGINE = MYISAM ;2.用PHP賣寫數(shù)據(jù)庫在連接數(shù)據(jù)庫之后:$conn ecti on = mysql_c onn ect($host_ n ame, $host_user, $host_pass);參加兩行:mysql_query(&qu

11、ot;set character set 'utf8'");/讀庫mysql_query("set n ames 'utf8'");/寫庫 就可以正常的讀寫MYSQ數(shù)據(jù)庫了。四JS相關(guān)的UTF-8編碼問題1. JS讀Cookie的中文亂碼問題PHP寫cookie的時候需要將中文字符進行 escape編碼,否那么JS讀到cookie中 的 中文字符將是亂碼。但php本身沒有escape函數(shù),我們新寫一個 escape函數(shù):fun ctio n escape($str) preg_match_all("/x80-xff.|x0

12、1-x7f+/",$str,$r); $ar = $r0;foreach($ar as $k=>$v)if(ord($vO) < 128)$ar$k = rawurle n code($v);else$ar$k = "%u ".bi n2hex(ico n v("UTF-8","UCS-2",$v);retur n joi n ("",$ar);JS讀cookie的時候,用unescape解碼,然后就解決cookie中有中文亂碼的問 題 了。2. 外部JS文件UTF-8編碼問題當(dāng)一個HTML頁

13、面或那么PHP頁面包含一個外部的JS文件時,如果HTML頁面或那么 PHP頁面是UTF-8編碼格式的文件,外部的JS文件同樣要轉(zhuǎn)成UTF-8的文件, 否那么 將出現(xiàn),沒有包含不成功,調(diào)用函數(shù)時沒有反響的情況。點擊編輯器的菜單:"文件-> "另存為,可以看到當(dāng)前文件的編碼,確保文件編碼為:UTF-8,如果是ANSI,需要將編碼改成:UTF-8。五.FLASH相關(guān)的UTF-8編碼問題FLASH內(nèi)部對所有字符串,默認都是以UTF-8處理1. FLASH 讀文普通本文件txt,html要將文本文件的編碼存為 UTF-8點擊編輯器的菜單:"文件-> "

14、另存為,可以看到當(dāng)前文件的編碼,確保文件編碼為:UTF-8,如果是ANSI,需要將編碼改成:UTF-8。2. FLASH 讀 XML 文件要將XML文件的編碼存為 UTF-8點擊編輯器的菜單:"文件-> "另存為,可以看到當(dāng)前文件的編碼,確保文件編碼為:UTF-8,如果是ANSI,需要將編碼改成:UTF-8。在XML第1行寫:<?xml versio n="1.0" en codi n g="utf-8"?>3. FLASH讀PHP返回數(shù)據(jù)如果PHP編碼本身是UTF-8的,直接echo就可以了 如果PHP編碼本身是G

15、B2312的,可以將PHP轉(zhuǎn)存成UTF-8編碼格式的文件,直 接 echo就可以了 如果PHP編碼本身是GB2312的,而且不允許改文件的編碼格式,用 下面的語句 將字符串轉(zhuǎn)換成UTF-8的編碼格式$n ew_str = ico n v("GB2312", "UTF-8", "$st廣);再echo就可以了4. FLASH讀數(shù)據(jù)庫MYSQL的數(shù)據(jù)FLASH要通過PHP讀取數(shù)據(jù)庫中的數(shù)據(jù),PHP本身的編碼不重要,關(guān)鍵是如果數(shù) 據(jù) 庫的編碼是GB2312的話,需要用下面的語句將字符串轉(zhuǎn)換成UTF-8的編碼格 式。$n ew_str = ico nv "GB2312", "UTF-8", "$st 廣;5. FLASH通過PHP寫數(shù)據(jù)一句話,F(xiàn)LASH專過來的字符串是UTF-8格式的,要轉(zhuǎn)換成相應(yīng)的編碼格式,再 操 作寫文件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論