php設置編碼格式
❶ php設置編碼的頭文件怎樣寫
php設置編碼默認就是utf8編碼
utf編碼 :header("Content-type: text/html; charset=utf-8");
gbk編碼 :header("Content-type: text/html; charset=gb2312");
big5編碼 :header("Content-type: text/html; charset=big5");
注意事項:通常情況以上代碼放在php頁面的首頁。
(1)php設置編碼格式擴展閱讀:
PHP優勢
1.開放的源代碼:所有的PHP源代碼事實上都可以得到。
2.免費的:和其它技術相比,PHP本身免費且是開源代碼。
3.快捷性:程序開發快,運行快,技術本身學習快。
4.跨平台性強:PHP是運行在伺服器端的腳本,可運行在UNIX、linux、WINDOWS、Mac OS下。
5.效率高:PHP消耗相當少的系統資源。
6.圖像處理:用PHP動態創建圖像。
7.面向對象:在php4,php5中,面向對象方面都有了很大的改進,php完全可以用來開發大型商業程序。
8.專業專註:PHP支持腳本語言為主,同為類C語言。
❷ 如何把讀取URL漢字轉化成UTF-8格式
在PHP中,將讀取的URL中的漢字轉換為UTF-8格式,通常會使用iconv函數。假設從URL中讀取到的字元串編碼為GBK,可以使用如下代碼進行轉換:
$str = iconv('GBK', 'UTF-8', $str);
這里,iconv是PHP內置函數,用於轉換字元編碼。'GBK'代表原編碼,'UTF-8'為目標編碼,$str是需要轉換的字元串。
轉換後的字元串將使用UTF-8編碼,可以用於進一步處理或顯示。
需要注意的是,在進行編碼轉換時,確保輸入字元串的原始編碼正確,否則可能會導致亂碼。
此外,除了iconv,PHP還提供了mb_convert_encoding函數,其使用方式類似:
$str = mb_convert_encoding($str, 'UTF-8', 'GBK');
兩種方法在大多數情況下可以互換使用,但iconv在處理某些特殊字元時表現更佳。
進行編碼轉換時,還需注意字元集的設置。在PHP配置文件php.ini中,確保設置正確的默認字元集,以避免潛在的問題。
總之,通過上述方法,可以輕松地將URL中的漢字從GBK編碼轉換為UTF-8格式,確保其在各種系統和應用程序中都能正確顯示。
❸ PHP實現URL編碼、Base64編碼、MD5編碼的方法
今天開始福哥要給大家講解關於字元編碼的知識,所謂字元編碼就是將一個字元串或者是一個二進制位元組數組裡面的每一個字元根據一定的規則替換成一個或者多個其他字元的過程。
字元編碼的意義有很多種,有的是為了將一些不可見的字元以可見字元替代保證可見度;有的是為了以少數字元去描述更多的其他字元便於傳遞數據;還有的是為了將不定長的字元串轉成定長的規則字元串來實現字元串加密的目的。
編碼,英文是Encode,意思是從一個原始的字元串根據編碼規則轉換成一段新的字元串的過程。編碼後的字元串裡面的字元會更加統一,或者更加單一,甚至會變成固定長度。
解碼,英文是Decode,和編碼正好相反,意思是從一段已經編碼後的字元串還原成編碼前的原始字元串的過程。並不是所有的經過編碼規則進行編碼後的字元串都可以解碼會原始字元串的,能夠解碼回來的編碼方式稱之為可逆編碼方式,不能夠解碼回來的編碼方式稱之為不可逆編碼方式。
URL編碼規則是這樣的,首先按順序取出字元串當中的每一個字元,將字元轉換為ASCII碼的十六進制數值,然後在十六進制數值前面加上一個百分號「%」,最後把每一個字元編碼後的組合拼接起來就完成了。而解碼規則就是反過來,將編碼後的字元串以百分號「%」拆分開,然後將每個十六進制數值轉換回ASCII碼,最後在拼接到一起就好了。
需要注意的GBK的字元串和UTF-8的字元串在進行URL編碼後得到的字元串是不一樣的,例如:GBK的「福哥」編碼後是「%B8%A3%B8%E7」,而UTF-8的「福哥」編碼後是「%E7%A6%8F%E5%93%A5」。
PHP提供了一個專門用來完成URL編碼的函數urlencode,使用也非常簡單,傳入原始字元串,返回編碼後的字元串。
PHP提供了一個專門用來完成URL解碼的函數urldecode,使用也很簡單,傳入編碼後的字元串,返回原始字元串。
Base64編碼就是基於64個可見字元將任何十進制字元或者二進制位元組轉換成這些字元的過程,64個字元包括大小寫字母和十個數字以及「+」和「/」,通常情況下「=」用來放在最後補位使用。
Base64編碼方式同樣受GBK或者UTF-8的影響,GBK的「福哥」的Base64碼是「uKO45w==」,而UTF-8的「福哥」的Base64碼是「56aP5ZOl」。
PHP提供了一個專門用來完成Base64編碼的函數base64_encode,使用也非常簡單,傳入原始字元串,返回編碼後的字元串。
PHP提供了一個專門用來完成Base64解碼的函數base64_decode,使用也很簡單,傳入編碼後的字元串,返回原始字元串。
MD5是一種不可逆的編碼,它採用摘要信息拼湊的方式可以將任意長度的十進制字元串或者二進制位元組轉換成固定32位長度的只包含小寫字母的字元串。
通常情況下,MD5編碼用來實現大數據的比較使用,MD5編碼方式同樣受GBK或者UTF-8的影響,GBK的「福哥」的MD5碼是「」,而UTF-8的「福哥」的MD5碼是「」。
PHP提供了一個專門用來完成MD5編碼的函數md5,函數名稱很直觀,使用也非常簡單,傳入原始字元串,返回編碼後的字元串。
今天福哥帶著童鞋們了解了關於URL編碼、Base64編碼和MD5編碼的知識,學會了在PHP語言當中使用這三種編碼方式的技巧,一般情況下,學會這三種編碼方式就足以應付絕大多數的場景下的數據編碼的需要了。
下一課福哥將介紹在Python語言裡面實現這三種編碼方式的技巧,敬請期待~
❹ PHP中文編碼~~
一、頁面編碼
1. 使用 <META http-equiv="content-type" content="text/html; charset=xxx"> 標簽設置頁面編碼
這個標簽的作用是聲明客戶端的瀏覽器用什麼字元集編碼顯示該頁面,xxx可以為GB2312,GBK,UTF-8(和Mysql不同,MySQL是 UTF8)等等。因此,大部分頁面可以採用這種方式來告訴瀏覽器顯示這個頁面的時候採用什麼編碼,這樣才不會造成編碼錯誤而產生亂碼。但是有的時候我們會發現有了這句還是不行,不管xxx是哪一種,瀏覽器採用的始終都是一種編碼,這個情況我後面會談到。
請注意,<meta>是屬於html信息的,僅僅是一個聲明,它起作用表明伺服器已經把HTML信息傳到了瀏覽器。
2. header("content-type:text/html; charset=xxx");
這個函數header()的作用是把括弧裡面的信息發到http標頭。
如果括弧裡面的內容為文中所說那樣,那作用和<META>標簽基本相同,大家對照第一個看發現字元都差不多的。但是不同的是如果有這段函數,瀏覽器就會永遠採用你所要求的xxx編碼,絕對不會不聽話,因此這個函數是很有用的。為什麼會這樣呢?那就得說說HTTPS標頭和HTML信息的差別了:
https標頭是伺服器以HTTP協議傳送HTML信息到瀏覽器前所送出的字串。
因為meta標簽是屬於html信息的,所以header()發送的內容先到達瀏覽器,通俗點就是header()的優先順序高於meta(不知道可不可以這樣講)。加入一個php頁面既有header("content-type:text/html; charset=xxx"),又有<META http-equiv="content-type" content="text/html; charset=xxx">,瀏覽器就只認前者http標頭而不認meta了。當然這個函數只能在php頁面內使用。
同樣也留有一個問題,為什麼前者就絕對起作用,而後者有時候就不行呢?這就是接下來要談的Apache的原因了。
3. AddDefaultCharset
Apache 根目錄的 conf 文件夾里,有整個Apache的配置文檔httpd.conf。
用文本編輯器打開httpd.conf,第708行(不同版本可能不同)有AddDefaultCharset xxx,xxx為編碼名稱。這行代碼的意思:設置整個伺服器內的網頁文件https標頭里的字元集為你默認的xxx字元集。有這行,就相當於給每個文件都加了一行header("content-type:text/html; charset=xxx")。這下就明白為什麼明明meta設置了是utf-8,可瀏覽器始終採用gb2312的原因。
如果網頁里有header("content-type:text/html; charset=xxx"),就把默認的字元集改為你設置的字元集,所以這個函數永遠有用。如果把AddDefaultCharset xxx前面加個「#」,注釋掉這句,而且頁面里不含header("content-type…"),那這個時候就輪到meta標簽起作用了。
4. default_charset
在 php.ini 文件中可以定義 php 的默認語言: default_charset = "xxx",xxx為編碼名稱。這行代碼的意思是設置所有 php 的輸出頁面編碼為 xxx。
總結:
以上 4 種編碼設置方法的優先順序如下:
header("content-type:text/html; charset=xxx")
default_charset xxx
AddDefaultCharset xxx
<META http-equiv="content-type" content="text/html; charset=xxx">
如果你是web程序員,給你的每個頁面都加個header("content-type:text/html; charset=xxx"),保證它在任何伺服器都能正確顯示,可移植性強。
至於那句AddDefaultCharset xxx,要不要注釋就仁者見仁了。反正我是注釋掉了,不過我寫頁子也要寫header(),便於放到伺服器上能正常顯示。
二、資料庫編碼
PHP 程序在查詢資料庫之前,首先執行 mysql_query(「SET NAMES xxxx」);其中 xxxx 是你網頁的編碼(charset=xxxx),如果網頁中 charset=utf8,則 xxxx=utf8,如果網頁中 charset=gb2312,則xxxx=gb2312,幾乎所有WEB程序,都有一段連接資料庫的公共代碼,放在一個文件里,在這文件里,加入mysql_query(「set names」)就可以了。
SET NAMES 顯示客戶端發送的 SQL 語句中使用什麼字元集。因此,SET NAMES 'utf-8'語句告訴伺服器「將來從這個客戶端傳來的信息採用字元集utf-8」。它還為伺服器發送回客戶端的結果指定了字元集。(例如,如果你使用一個SELECT語句,它表示列值使用了什麼字元集。)
三、中文文件名
默認情況下,文件名為中文時不能訪問。要使中文文件名能正常訪問,需進行如下設置:
在ie中選擇 工具 -> internet選項 -> 高級 -> 取消「總是以UTF-8發送URL」。
❺ 如何配置PHP UTF8 編碼 配置文件
要輸出UTF8格式時,加上以下語句:
header(」Content-Type: text/html; charset=UTF-8″)
php用UTF-8總結:
php文件本身必須是UTF-8編碼。不像Java會生成class文件,避免這個問題
php要輸出頭:header(」Content-Type: text/html; charset=UTF-8″)
meta標簽無所謂,有header所有瀏覽器就會按header來解析
所有外圍都得用UTF8,包括資料庫、×.js、×.css(CSS影響倒不大)
php本身不是Unicode的,所有substr之類的函數得改成mb_substr(需要裝mbstring擴展);或者用iconv轉碼(基本上的linux都裝了,沒裝的話download、tar、make、make install,很簡單的)
my.ini:
[MySQL(和PHP搭配之最佳組合)]
default-character-set=utf8
[MySQL(和PHP搭配之最佳組合)d]
default-character-set=utf8
default-storage-engine=MyISAM
在[MySQL(和PHP搭配之最佳組合)d]下加入:
default-collation=utf8_bin
init_connect='SET NAMES utf8'
在需要做資料庫操作的php程序前面加上
mb_internal_encoding('utf-8');
create table最後邊加上ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
phpMyAdmin/config.inc.php
$cfg['DefaultCharset'] = 'utf-8';
$cfg['RecodingEngine'] = 'iconv';
phpAdmin導出數據時
把"二進制區域使用十六進制顯示"的勾去掉
特別郁悶的:文件系統函數不支持UTF-8!
❻ php 將中文轉換為GBK編碼
1、運行控制台,程序->運行,輸入CMD,點擊確定進入DOS操作系統 快捷鍵windows鍵+R鍵。