Ⅰ php 如何將unicode碼轉換成漢字
$str = '$d=[{"_id":{"$id":"4fda7d42741d727c14000000"},"name":"\u519c\u592b\u5c71\u6cc9","bc":"123456","pic":"d: pic\water.jpg","aid":"232fd4df3"}]
$c=[{"_id":{"$id":"4fdaa7f3741d725816000000"},"bc":"012345678","name":"\u7ef4\u8fbe\u7eb8\u5dfe","cls":{"id":"125","name":"\u65e5\u7528\u54c1"},"std":{"name":"\u5f20\u6570","val":"10"}}]';
$str=preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", $str);
echo $str;
亂碼的話記得換下瀏覽器編碼。....
Ⅱ php中json_encode中文不進行unicode編碼
有兩種方法可以借鑒以下:
1. 先把中文欄位 urlencode,json_encode 後,再用 urldecode,如下:
$data=array('result'=>1,'data'=>'示例');
echourldecode(json_encode(urlencode($data)));
2.PHP5.4以上:
json_encode 函數已經新增了一個選項:JSON_UNESCAPED_UNICODE。
加上這個選項後,就不會自動把中文編碼了。
$data=array('result'=>1,'data'=>'示例');
echojson_encode($data,JSON_UNESCAPED_UNICODE);
Ⅲ php文件轉為有bom頭utf8編碼不亂碼,轉為無bom頭utf8亂碼
PHP的介紹
PHP,是英文超文本預處理語言Hypertext Preprocessor的縮寫。PHP 是一種可以 HTML 內嵌式的語言,是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,被廣泛地運用。自從PHP5開始,引入了面向對象的全部機制,並且保留了向下兼容性。
PHP的發展歷史
PHP原始為Personal Home Page的縮寫,現已經正式更名為 「PHP: Hypertext Preprocessor」的縮寫。注意不是「Hypertext Preprocessor」的縮寫,這種將名稱放到定義中的寫法被稱作遞歸縮寫。PHP於1994年由Rasmus Lerdorf創建,剛剛開始是Rasmus Lerdorf 為了要維護個人網頁而製作的一個簡單的用Perl語言編寫的程序。最初這些工具程序用來顯示 Rasmus Lerdorf 的個人履歷,以及統計網頁流量。後來又用C語言重新編寫,包括可以訪問資料庫。他將這些程序和一些表單直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和資料庫連接,產生簡單的動態網頁程序。
PHP的現狀
PHP作為最成熟的開源體系LAMP(linux,Apache,MySQL,PHP)的重要一員,以其簡單性、開放性、低成本、安全性和適用性,受到越來越多的Web程序員的歡迎和喜愛。
PHP中提供了作為編碼語言所有的基本功能。此外,它還提供許多實用的功能,使得PHP比其他編程語言更適合動態網頁的開發。針對企業級Web應用,PHP也不斷地完善和增加新的功能。
PHP是開放源代碼的,這意味著其代碼的核心部分可以被免費使用。所有源碼、文檔可以在PHP官方網站上獲得。用戶可以自由復制、編譯、分發其拷貝。任何一個用PHP編寫的程序都屬於用戶自己,並且可以自行處理。
正式由於這種開源精神,才使PHP社區可以聚集眾多的愛好者,也使得PHP有如此迅猛的發展。PHP的更新速度,以及發現和修正錯誤的速度是非常迅速的。可以看到,幾乎每周都有一個新版本的PHP程序包發布。
目前,PHP的官方維護者和推動者Zend公司已經加快了PHP企業級應用的步伐。隨著PHP5的應用不斷擴大,Zend公司還將推出一個標準的PHP開發框架Zend Framework。通過這一框架,PHP開發者可以快速地構建Web應用。
PHP還具有優秀的平台兼容性。PHP源於UNIX系統平台,尤其是PHP、MySQL、 Apache和Linux組合,備受PHP愛好者的歡迎。不僅如此,PHP在Windows系列操作系統上也有出色的表現。其良好的程序界面、語言易用性等特點吸引了微軟的開發人員。目前,有消息稱未來的Windows . NET開發環境將集成PHP,這也意味著PHP的用戶群將日益壯大。
PHP是廣泛及通用的腳本語言,它尤其適合於Web開發。PHP是世界上主要的網路開發語言之一,運行在世界三分之一的伺服器上。它是從雅虎到Facebook等公司的平台選擇,也是共享主機上最廣泛的開發平台,為世界上數百萬的網站提供動力。
今天,已經有包括雅虎和亞馬遜等在內的數百萬網站,以及眾多的開發人員和編程愛好者正在使用PHP。從最初的PHP/FI到現在的PHP5,PHP的發展是及其迅猛的,其未來的發展前景也必定令人矚目。
隨著PHP5版本性能的提升,以及面向對象功能的完善,PHP也逐漸開始於面向企業級應用。PHP的發展前景將無限廣闊。
現在php5的最新版本為php5.4.3,較php5.3增強了安全特性,去掉了一些威脅安全的函數如global_register等,去掉了安全模式。
PHP的特點
PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。
PHP安裝它可以比 CGI或者Perl更快速的執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;
PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現,而且支持幾乎所有流行的資料庫以及操作系統。
最重要的是PHP可以用C、C++進行程序的擴展!
PHP的優勢
開放的源代碼:所有的PHP源代碼事實上都可以得到。
PHP是免費的:和其它技術相比,PHP本身免費且是開源代碼。
php的快捷性:程序開發快,運行快,技術本身學習快。嵌入於HTML:因為PHP可以被嵌入於HTML語言,它相對於其他語言。編輯簡單,實用性強,更適合初學者。
跨平台性強:由於PHP是運行在伺服器端的腳本,可以運行在UNIX、LINUX、WINDOWS、Mac OS下。
效率高:PHP消耗相當少的系統資源。
圖像處理:用PHP動態創建圖像,PHP圖像處理默認使用GD2。不過也可以配置為使用image magick進行圖像處理。
面向對象:在php4,php5 中,面向對象方面都有了很大的改進,php完全可以用來開發大型商業程序。
專業專註:PHP支持腳本語言為主,同為類C語言
Ⅳ 怎麼用PHP把unicode轉成utf8
function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4})|.{4};|\d+;|.+/U",$str,$r);
$ar = $r[0];
//print_r($ar);
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u"){
$ar[$k] = iconv("UCS-2BE","UTF-8",pack("H4",substr($v,-4)));
}
elseif(substr($v,0,3) == ""){
$ar[$k] = iconv("UCS-2BE","UTF-8",pack("H4",substr($v,3,-1)));
}
elseif(substr($v,0,2) == "") {
$ar[$k] = iconv("UCS-2BE","UTF-8",pack("n",substr($v,2,-1)));
}
}
return join("",$ar);
}
echo unescape("紫星藍");
今天有用戶反饋,表單系統用戶提交的數據中文會亂碼。測試發現問題出在 iconv 轉換上。
iconv('UCS-2', 'GBK', '中文')
Google 搜索發現,原因是 Linux 伺服器上 UCS-2 編碼方式與 Winodws 不一致。
於是,我改成 iconv('UCS-2BE', 'GBK', '中文') 試試,中文正常了
以下是有關兩個平台 UCS-2 編碼的潛規則:
1, UCS-2 不等於 UTF-16。 UTF-16 每個位元組使用 ASCII 字元范圍編碼,而 UCS-2 對每個位元組的編碼可以超出 ASCII 字元范圍。UCS-2 和 UTF-16 對每個字元至多佔兩個位元組,但是他們的編碼是不一樣的。
2, 對於 UCS-2, windows 下默認是 UCS-2LE。用 MultibyteToWidechar(或者A2W)生成的是 UCS-2LE 的 unicode。windows記事本可以將文本保存為 UCS-2BE,相當於多了層轉換。
3, 對於 UCS-2, linux 下默認是 UCS-2BE。用iconv(指定UCS-2)來轉換生成的是 UCS-2BE 的 unicode。如果轉換windows平台過來的 UCS-2, 需要指定 UCS-2LE。
4, 鑒於windows和linux等多個平台對 UCS-2 的理解不同(UCS-2LE,UCS-2BE)。MS 主張 unicode 有個引導標志(UCS-2LE FFFE, UCS-2BE FEFF),以表明下面的字元是 unicode 並且判別 big-endian 或 little-endian。 所以從 windows 平台過來的數據發現有這個前綴,不用慌張。
5, linux 的編碼輸出,比如從文件輸出,從 printf 輸出,需要控制台做適當的編碼匹配(如果編碼不匹配,一般和該程序編譯時的編碼有若干關系),而控制台的轉換輸入需要查看當前的系統編碼。比如控制台當前的編碼是 UTF-8, 那麼 UTF-8 編碼的東西能正確顯示,GBK 就不能;同樣,當前編碼是 GBK, 就能顯示 GBK 編碼,後來的系統應該更智能的處理好更多的轉換了。不過通過 putty 等終端還是需要設置好終端的編碼轉換以解除亂碼的煩惱。
PHP中對漢字進行UNICODE編碼和解碼的實現
//將內容進行UNICODE編碼
function unicode_encode($name)
{
$name = iconv('UTF-8', 'UCS-2', $name);
$len = strlen($name);
$str = '';
for ($i = 0; $i < $len - 1; $i = $i + 2)
{
$c = $name[$i];
$c2 = $name[$i + 1];
if (ord($c) > 0)
{ // 兩個位元組的文字
$str .= '\u'.base_convert(ord($c), 10, 16).base_convert(ord($c2), 10, 16);
}
else
{
$str .= $c2;
}
}
return $str;
}
$name = 'MY,你大爺的';
$unicode_name=unicode_encode($name);
echo '<h3>'.$unicode_name.'</h3>';
// 將UNICODE編碼後的內容進行解碼
function unicode_decode($name)
{
// 轉換編碼,將Unicode編碼轉換成可以瀏覽的utf-8編碼
$pattern = '/([\w]+)|(\\\u([\w]{4}))/i';
preg_match_all($pattern, $name, $matches);
if (!empty($matches))
{
$name = '';
for ($j = 0; $j < count($matches[0]); $j++)
{
$str = $matches[0][$j];
if (strpos($str, '\\u') === 0)
{
$code = base_convert(substr($str, 2, 2), 16, 10);
$code2 = base_convert(substr($str, 4), 16, 10);
$c = chr($code).chr($code2);
$c = iconv('UCS-2', 'UTF-8', $c);
$name .= $c;
}
else
{
$name .= $str;
}
}
}
return $name;
}
echo 'MY,\u4f60\u5927\u7237\u7684 -> '.unicode_decode($unicode_name);
Ⅳ 如何讓php jsonencode 不轉義unicode
方法有兩種
1:php版本大於等於5.4,在使用json_encode的時候加入第二個參數JSON_UNESCAPED_UNICODE:如
//這樣使用中文可不會被轉義
$jsonStr=json_encode($data,JSON_UNESCAPED_UNICODE);
2:如果php版本小於5.4,可以使用這種方法,對unicode碼再進行解碼,解碼函數如下:
/**
*因php版本小於5.4
*decodeUnicode對中文編碼unicode進行反轉義為漢字
*@param$strjson字元串
*@return轉義後的json字元串
*/
functiondecodeUnicode($str)
{
returnpreg_replace_callback('/\\u([0-9a-f]{4})/i',
create_function(
'$matches',
'returnmb_convert_encoding(pack("H*",$matches[1]),"UTF-8","UCS-2BE");'
),
$str);
}
//使用方法
$jsonStr=decodeUnicode(json_encode($data));
//或者單獨封裝一個函數
function_json_encode($data=array()){
returndecodeUnicode(json_encode($data));
}
Ⅵ PHP 如何取得漢字的Unicode編碼 且相互轉換
sybase_connect
連上資料庫。
語法: int sybase_connect(string [servername], string [username], string [password]);
返回值: 整數
函數種類: 資料庫功能
本函數用來打開與 Sybase 資料庫的連接。參數 servername 為欲連上的資料庫伺服器名稱。參數 username 及 password 可省略,分別為連接使用的帳號及密碼。使用本函數需注意早點關閉資料庫,以減少系統的負擔。連接成功則返回資料庫的連接代號,失敗返回 false 值。
Ⅶ PHP解密Unicode及Escape加密字元串
在json中不支持中文,用它傳送中文數據就會出現數據丟失或者亂碼,必須在傳送前對要發送的字元串進行編碼,由於傳送過去需要用js進行數據解析,考慮
到js中有unescape函數,故若在php中有個escape函數,對數據進行編碼,在客戶端用unescape進行
解碼,這樣就會方便很多。
本文給大家分享一個PHP解密Unicode及Escape加密字元串函數
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
?php
function
uni_decode($s)
{
preg_match_all('/#([0-9]{2,5});/',
$s,
$html_uni);
preg_match_all('/[%]u([0-9a-f]{4})/ie',
$s,
$js_uni);
$source
=
array_merge($html_uni[0],
$js_uni[0]);
$js
=
array();
for($i=0;$icount($js_uni[1]);$i++)
{
$js[]
=
hexdec($js_uni[1][$i]);
}
$utf8
=
array_merge($html_uni[1],
$js);
$code
=
$s;
for($j=0;$jcount($utf8);$j++)
{
$code
=
str_replace($source[$j],
unicode2utf8($utf8[$j]),
$code);
}
return
$code;//$s;//preg_replace('/u([0-9a-f]{4})/ie',
chr(hexdec('1')),
$s);
}
function
unicode2utf8($c)
{
$str=;
if
($c
0x80)
{
$str.=chr($c);
}
else
if
($c
0x800)
{
$str.=chr(0xc0
|
$c6);
$str.=chr(0x80
|
$c
0x3f);
}
else
if
($c
0x10000)
{
$str.=chr(0xe0
|
$c12);
$str.=chr(0x80
|
$c6
0x3f);
$str.=chr(0x80
|
$c
0x3f);
}
else
if
($c
0x200000)
{
$str.=chr(0xf0
|
$c18);
$str.=chr(0x80
|
$c12
0x3f);
$str.=chr(0x80
|
$c6
0x3f);
$str.=chr(0x80
|
$c
0x3f);
}
return
$str;
}
$str='%u5927%u5BB6%u597D%uFF0C我是孤魂!br
/';
echo
uni_decode($str);
//
大家好,我是孤魂!這是測試文本!
在網上搜索一把,很多用php實現的escape函數,大同小異
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function
phpescape($str){
preg_match_all(/[x80-xff].|[x01-x7f]+/,$str,$newstr);
$ar
=
$newstr[0];
foreach($ar
as
$k=$v){
if(ord($ar[$k])=127){
$tmpString=bin2hex(iconv(GBK,ucs-2,$v));
if
(!eregi(WIN,PHP_OS)){
$tmpString
=
substr($tmpString,2,2).substr($tmpString,0,2);
}
$reString.=%u.$tmpString;
}
else
{
$reString.=
rawurlencode($v);
}
}
return
$reString;
}
以上所述就是本文的全部內容了,希望大家能夠喜歡。