中国語は json でサポートされていません。これを使用して中国語データを送信すると、データの損失や文字化けが発生します。これは、js を使用する必要があるためです。データ分析. js に unescape 関数があることを考えると、php にデータをエンコードし、クライアントでそれをデコードするために 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 |
関数 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 = 配列(); for($i=0;$i $js[] = hexdec($js_uni[1][$i]); } $utf8 = array_merge($html_uni[1], $js); $コード = $s; for($j=0;$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) ; } 関数 unicode2utf8($c) { $str=""; if ($c <0x80) { $str.=chr($c); } else if ($c <0x800) { $str.=chr(0xc0 | $c>>6); $str.=chr(0x80 | $c & 0x3f); } else if ($c
$str.=chr(0xe0 | $c>>12); $str.=chr(0x80 | $c>>6 & 0x3f); $str.=chr(0x80 | $c & 0x3f); } else if ($c
$str.=chr(0xf0 | $c>>18); $str.=chr(0x80 | $c>>12 & 0x3f); $str.=chr(0x80 | $c>>6 & 0x3f); $str.=chr(0x80 | $c & 0x3f); } $str;を返す } $str='%u5927%u5BB6%u597D%uFF0CI 私は孤独な魂です! echo uni_decode($str); // 皆さんこんにちは、私は孤独な魂です!これはテストテキストです! |
インターネットで検索すると、phpに実装されたエスケープ関数がたくさんありますが、それらは似ています
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
関数phpescape($str){ preg_match_all("/[x80-xff].|[x01-x7f]+/",$str,$newstr); $ar = $newsstr[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; } 他 { $reString.= rawurlencode($v); } } $reString を返す; } |
以上がこの記事の全内容ですが、皆さんに気に入っていただければ幸いです。
。