php發送郵件亂碼
A. 我php設置的是UTF-8,資料庫設置的是UTF8-general-ci,從頁面發送數據給資料庫後資料庫顯示的是亂碼是為啥
試試把下面類似語句放到連接語句之後
mysql_query("SETNAMESUTF8");
或 PDO
$dbh->exe("SETNAMESUTF8");
用 SET NAMES UTF8 校正一下連接編碼
因為PHP 連接資料庫的過程中會經過三次編碼轉換,比如輸出的的時候
MySql Server(UTF-8) -> PHP Connection( Latin1) -> UTF8頁面的Result(UTF-8) 這時兩種編碼不兼容則產生亂碼。
B. 鎬庢牱瑙e喅PHP涓鏂囦貢鐮侀棶棰
涔辯爜鎸囩殑鏄璁$畻鏈虹郴緇熶笉鑳芥樉紺烘g『鐨勫瓧絎︼紝鑰屾樉紺哄叾浠栨棤鎰忎箟鐨勫瓧絎︽垨絀虹櫧錛屽備竴鍫咥SCII Code銆傛墍鏄劇ず鍑烘潵鐨勬枃瀛楃粺縐頒負涔辯爜銆備貢鐮佹槸鍥犱負鎵浣跨敤鐨勫瓧絎︾殑婧愮爜鍦ㄦ湰鍦拌$畻鏈轟笂浣跨敤浜嗛敊璇鐨勬樉紺哄瓧搴擄紝鎴栧湪鏈鍦拌$畻鏈虹殑瀛楀簱涓鎵句笉鍒扮浉搴斾簬婧愮爜鎵鎸囦唬鐨勫瓧絎︽墍鑷淬
閫氫織鐐硅詫細
涔辯爜灝辨槸浣犳墦寮鐜嬮〉鎴栭偖綆憋紝閲岄潰鐨勫瓧涓嶆槸鍏ㄤ腑鏂囩殑錛岃屾槸涓浜涗貢涓冨叓緋熻帿鍚嶅叾濡欑殑鏃犳剰涔夌殑瀛楃︾粍鍚堝湪涓璧楓備富瑕佹槸璁$畻鏈虹殑瀛楀簱鍑洪敊鎵鑷淬
1涓鑸鍑虹幇鍦ㄧ綉欏碉紝鐢ㄧ綉欏典笂闈㈢殑鏌ョ湅鈥斺旂紪鐮佲斺旂畝浣撲腑鏂囧嵆鍙瑙e喅銆
2 鍑虹幇涔辯爜涓鑸鏄疻indows緋葷粺瀛楀簱鐨勯棶棰橈紝鍙鑳芥槸緋葷粺閿欒鎴栦笉姝e父鍏蟲満閫犳垚鐨勶紝涔熷彲鑳芥槸鏌愪簺杞浠墮渶瑕佷嬌鐢ㄦ搷浣滅郴緇熶互澶栫殑瀛楀簱閫犳垚鐨勩傝В鍐沖姙娉曞緱鐪嬪叿浣撶殑闂棰橈紝涓鑸鎯呭喌涓嬬殑Windows涔辯爜鍙浠ラ氳繃浠ヤ笅涓夌嶆柟娉曡В鍐熾
絎涓縐嶆柟娉曟槸涓嬭澆 瑙e喅Windows XP SP2涔辯爜琛ヤ竵 V1.00 (鍗庡啗杞浠跺洯)
絎浜岀嶆槸瑙e喅Windows緋葷粺閿欒閫犳垚鐨勪貢鐮侀棶棰橈紝閲嶅惎鍚庣敤F8閿嬋媧葷郴緇熻彍鍗曪紝榪涘叆瀹夊叏妯″紡銆傜瓑緋葷粺媯鏌ュ畬姣曪紝紜鐩樻病鏈夊搷搴斿悗鍐嶉噸鏂版e父閫鍑哄苟閲嶆柊鍚鍔ㄨ$畻鏈猴紝姝e父榪涘叆Windows錛屽瓧浣撲竴鑸灝辮兘鑷鍔ㄦ仮澶嶃傝繖鏄鍥犱負Windows鍦ㄨ繘鍏ュ畨鍏ㄦā寮忔椂浼氶噸鏂扮儲寮曞瓧搴撳強鏁寸悊鑿滃崟銆
絎涓夌嶈В鍐蟲柟娉曠敤浜庝慨姝h蔣浠墮犳垚鐨勬敞鍐岃〃涓鍏充簬瀛椾綋閮ㄥ垎璁劇疆鍑洪敊鐨勯棶棰樸傝繍琛屸淩egedit鈥濆惎鍔ㄦ敞鍐岃〃緙栬緫鍣ㄣ傚湪鈥淗KEY_LOCAL_MACHINE\System\CurrentControlSet\Control\fontassoc鈥濋敭涓嬫湁 鈥淎ssociated CharSet鈥濆拰鈥淎ssociated DefaultFonts鈥 涓や釜閿銆傚綋鍑虹幇奼夊瓧涔辯爜鏃訛紝榪欎袱涓閿涓鐨勫唴瀹瑰氨鍙鑳戒笉姝g『鐢氳嚦涓嶅畬鏁淬傚畠浠鐨勬g『鍐呭瑰簲璇ユ槸鈥淎ssociated CharSet鈥濆唴鏈夆滐紙榛樿わ級銆丄NSI錛00錛夈丟B2312錛86錛夈丱EM錛團F錛夈丼YMBOL錛02錛夆濆嚑欏逛覆鍊礆紝閿鍊煎垎鍒涓衡滐紙鏈璁劇疆閿鍊礆級銆乊es銆乊es銆乊es銆丯o鈥濓紝鑰屸淎ssociated DefaultFonts鈥濆唴鏈夆滐紙榛樿わ級銆丄ssocSystemFont銆丗ontPackegeDecorative銆丗ontPackegeDontCare銆丗ontPackegeModern銆丗ontPackegeRoman銆丗ontPackegeScript銆丗ontPackegeSwiss鈥濆嚑欏逛覆鍊礆紝閿鍊煎垎鍒涓衡滐紙鏈璁劇疆閿鍊礆級銆乻imsun.ttf銆佸畫浣撱佸畫浣撱佸畫浣撱佸畫浣撱佸畫浣撱佸畫浣撯濄傞噸鏂板惎鍔ㄧ郴緇熷悗奼夊瓧灝卞簲璇ユ樉紺烘g『浜嗐傚緩璁鎮ㄥ湪淇鏀瑰墠鍏堝囦喚娉ㄥ唽琛錛屼互闃蹭慨鏀歸敊璇浣跨郴緇熷嚭鐜伴棶棰樸
C. 微信後台PHP代碼中文亂碼
header("content-type:text/html;charset=utf-8");
mysql_query('SETNAMESUTF8');
D. php 有關utf-8亂碼的問題
伺服器上用了別的編碼,應該是windows的伺服器吧?有可能是GBK或者GB2312編碼。
兩種方法解決此問題。
1、先在本地把所有文件都換成伺服器的編碼,然後再傳上去;此法,你的php編碼需要與伺服器上的資料庫編碼一致,也既有可能是那兩種編碼。
2、修改伺服器上的編碼為utf-8。此方法需要你有足夠的許可權去修改伺服器上apache或者IIS編碼。如果修改編碼成功,你的資料庫也不用換編碼。
如果保持你的網頁編碼不變,那就要修改mysql編碼,即像stjdydayou
所言,執行資料庫數據插入、更改、查詢時,執行一條查詢語句:
mysql_query("set
names
'utf-8'");
之所有用utf-8編碼,是因為你的php編碼目前為utf-8.
E. PHP 輸出簡單的中文 亂碼問題
解決php中中文亂碼問題方法
php文件本身的編碼與網頁的編碼應匹配
a. 如果欲使用gb2312編碼,那麼php要輸出頭:header(「Content-Type: text/html; charset=gb2312"),靜態頁面添加<metahttp-equiv="Content-Type" content="text/html; charset=gb2312">,所有文件的編碼格式為ANSI,可用記事本打開,另存為選擇編碼為ANSI,覆蓋源文件。
b. 如果欲使用utf-8編碼,那麼php要輸出頭:header(「Content-Type: text/html; charset=utf-8"),靜態頁面添加<metahttp-equiv="Content-Type" content="text/html; charset=utf-8">,所有文件的編碼格式為utf-8。保存為utf-8可能會有點麻煩,一般utf-8文件開頭會有BOM,如果使用session就會出問題,可用editplus來保存,在editplus中,工具->參數選擇->文件->UTF-8簽名,選擇總是刪除,再保存就可以去掉BOM信息了。php本身不是Unicode的,所有substr之類的函數得改成mb_substr(需要裝mbstring擴展);或者用iconv轉碼。
如果你的HTML文件文件出現了亂碼問題,那麼你可以在head標簽裡面加入UTF8編碼(國際化編碼):UTF-8是沒有國家的編碼,也就是獨立於任何一種語言,任何語言都可以使用的。
(5)php發送郵件亂碼擴展閱讀:
解決PHP 輸出簡單的中文 亂碼問題的其他方法:
在php的echo前面加入header("Content-Type:text/html;charset=gb2312")
把<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />中的UTF-8改成gb2312
F. PHP GBK編碼post提交到utf-8頁面接收 怎麼會是亂碼的呢
編碼不一樣,肯定要亂碼呀,接收的頁面用iconv 函數 轉換一下編碼,就不會亂碼了
G. 請教php高手,解決basename函數和mb_substr函數處理中文文件名稱的解決方法,在上傳文件時,總是出現亂碼
兩個解決辦法:
第一,不使用中文文件名;
第二,對文件名進行編碼轉換,然後mb_substr就不會出現亂碼了。