本文目录一览:
- php 能实现汉字转url编码的方法吗?
- php json_encode使用中文不转码
- PHP 输出简单的中文 乱码问题
- php搜索 繁体怎么转成简体
- php中中文如何转码
- 如何正确运用PHP json_encode函数进行中文转换
php 能实现汉字转url编码的方法吗?
rawurlencode()
函数即可!
示例:
function raw($String, $en = false) {
return !$en ? rawurldecode($String) : rawurlencode($String);
}
echo raw('%E5%AE%A2%E6%88%B7'); // 输出:客户
echo raw('客户', true); // 输出: %E5%AE%A2%E6%88%B7
php json_encode使用中文不转码
PHP转JSON,中文会被转码成Unicode,使用常量 JSON_UNESCAPED_UNICODE
可以使中文原样输出。
- 不使用
JSON_UNESCAPED_UNICODE
- 使用
JSON_UNESCAPED_UNICODE
Json在5.4还加入了:JSON_BIGINT_AS_STRING
、JSON_PRETTY_PRINT
、JSON_UNESCAPED_SLASHES
等选项。 其中两个比较常用的参数: JSON_UNESCAPED_UNICODE
(中文不转为Unicode,对应的数字 256)JSON_UNESCAPED_SLASHES
(不转义反斜杠,对应的数字 64) 如果同时使用两个常量:
JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320
使用方法:
json_encode($arr, 320);
PHP5.4才支持 JSON_UNESCAPED_UNICODE
这个参数,此参数是让中文字符在 json_encode
的时候不用转义,减少数据传输量。
PHP 输出简单的中文 乱码问题
解决php中中文乱码问题方法
- php文件本身的编码与网页的编码应匹配
a. 如果欲使用
gb2312
编码,那么php要输出头:
静态页面添加:header("Content-Type: text/html; charset=gb2312");
所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。 b. 如果欲使用<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
utf-8
编码,那么php要输出头:
静态页面添加:header("Content-Type: text/html; charset=utf-8");
所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用session就会出问题,可用EditPlus来保存,在EditPlus中,工具-参数选择-文件-UTF-8签名,选择总是删除,再保存就可以去掉BOM信息了。<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- php本身不是Unicode的,所有
substr
之类的函数得改成mb_substr
(需要装mbstring
扩展);或者用iconv
转码。 - 如果你的HTML文件出现了乱码问题,可以在
<head>
标签里面加入UTF8编码:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
扩展资料:
- 在php的echo前面加入:
header("Content-Type:text/html;charset=gb2312");
- 把
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
中的UTF-8
改成gb2312
。 参考资料:百度百科-PHP
php搜索 繁体怎么转成简体
PHP实现---汉字简体繁体转换 这是一个以class包装好的简繁体转换的class,另外需要两个table档:
gb.map
big5.map
程式如下:CCharset.php3
<?php
//=====================================================
// 程序员: Magic Jerry
//
// function Big5_Gb($str) = big5转GB for string
// function Gb_Big5($str) = GB转Big5 for string
//=====================================================
class CCharset {
var $gb_map="gb.map"; // 如果要放到别的路径,要加上完整路径
var $big5_map="big5.map"; // 例如 ="/home/table/gb.map"
var $dep_char = 127;
//-----------------------------------------------------------------
function cbig5_gb($str, $fd) {
$c=ord(substr($str,0,1));
$x=ord(substr($str,1,1));
$address = (($c-160)*510)+($x-1)*2;
fseek($fd, $address);
$hi=fgetc($fd);
$lo=fgetc($fd);
return "$hi$lo";
}
function cgb_big5($str, $fd) {
$c=ord(substr($str,0,1));
$x=ord(substr($str,1,1));
$address = (($c-160)*510)+($x-1)*2;
fseek($fd, $address);
$hi=fgetc($fd);
$lo=fgetc($fd);
return "$hi$lo";
}
//-----------------------------------------------------------------
function Big5_Gb($str) {
$fd = fopen ($this->gb_map, "r");
$str=str_replace("charset=big5","charset=gb2312", $str);
$outstr="";
for($i=0; $i<strlen($str); $i++) {
$ch=ord(substr($str,$i,1));
if($ch > $this->dep_char) {
$outstr.=$this->cbig5_gb(substr($str,$i,2),$fd);
$i++;
} else {
$outstr.=substr($str,$i,1);
}
}
fclose ($fd);
return $outstr;
}
//-----------------------------------------------------------------
function Gb_Big5($str) {
$fd = fopen ($this->big5_map, "r");
$str=str_replace("charset=gb2312","charset=big5", $str);
$outstr="";
for($i=0; $i<strlen($str); $i++) {
$ch=ord(substr($str,$i,1));
if($ch > $this->dep_char) {
$outstr.=$this->cgb_big5(substr($str,$i,2),$fd);
$i++;
} else {
$outstr.=substr($str,$i,1);
}
}
fclose ($fd);
return $outstr;
}
}
?>
使用范例:
<?php
// Designer: Magic Jerry
include("CCharset.php3");
$obj = new CCharset;
$big5 = "这是一个big5的文字串";
$tgb = $obj->Big5_Gb($big5);
echo $tgb; // $tgb为转换好的gb码字串
$tbig5 = $obj->Gb_Big5($tgb);
echo $tbig5; // 又被转回来了: big5
?>
如果直接转换网页或档案:
<?php
$file = $QUERY_STRING;
$fcontents = join('', file("$file"));
$fcontents = str_replace("head", "head base href=$file", $fcontents);
$code = new CCharset;
$gb = $code->Big5_Gb($fcontents);
echo $gb;
?>
php中中文如何转码
应该是没有URL编码(一般来说,用默认字符集是没有问题的)。
- URL编码/解码,可用函数
urlencode()
与urldecode()
。 - 有一个小问题,你有个地方打错了,在表单中把
playerName
打成了playerNmae
,而iframe的URL中却是playerName
。
iframe代码改为:
<iframe id="aaa" name="aaa" width="600" height="500" src="网址/playerDetail.php?serverName=<?php echo urlencode($_GET["serverName"]); ?>&playerName=<?php echo urlencode($_GET["playerName"]); ?>"></iframe>
表单代码改为:
<form action="22.php" method="get">
服务器: <input type="text" name="serverName" /><br />
玩家名: <input type="text" name="playerName" /><br />
<input type="submit" />
</form>
再试试?
如何正确运用PHP json_encode函数进行中文转换
在 PHP 中使用 json_encode()
内置函数(PHP 5.2)可以使得 PHP 中数据可以与其他语言很好地传递并使用它。这个函数的功能是将数值转换成 JSON 数据存储格式,但是转换后的中文会变成 Unicode 编码。
示例代码:
<?php
$arr = array(
'Name' => '希亚',
'Age' => 20
);
$jsonencode = json_encode($arr);
echo $jsonencode;
?>
运行结果:
{"Name":null,"Age":20}
json_encode
函数中中文被编码成 null
了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持 utf-8 编码,我认为是前端的 Javascript 也是 utf-8 的原因。
示例代码:
<?php
$array = array(
'title' => iconv('gb2312','utf-8','这里是中文标题'),
'body' => 'abcd...'
);
echo json_encode($array);
?>
运行结果:
{"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."}
数组中所有中文在 json_encode
之后都不见了或者出现 \u2353
等。解决方法是用 urlencode()
函数处理一下,在 json_encode
之前,把所有数组内所有内容都用 urlencode()
处理一下,然后 json_encode()
转换成 JSON 字符串,最后再用 urldecode()
将编码过的中文转回来。
完整解决方案:
<?php
/***************************************************************
* 使用特定function对数组中所有元素做处理
* @param string $array 要处理的字符串
* @param string $function 要执行的函数
* @return boolean $apply_to_keys_also 是否也应用到key上
* @access public
***************************************************************/
function arrayRecursive($array, $function, $apply_to_keys_also = false) {
static $recursive_counter = 0;
if (++$recursive_counter > 1000) {
die('possible deep recursion attack');
}
foreach ($array as $key => $value) {
if (is_array($value)) {
arrayRecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}
if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
$recursive_counter--;
}
/***************************************************************
* 将数组转换为JSON字符串(兼容中文)
* @param array $array 要转换的数组
* @return string 转换得到的json字符串
* @access public
***************************************************************/
function JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}
$array = array(
'Name' => '希亚',
'Age' => 20
);
echo JSON($array);
?>
运行结果:
{"Name":"希亚","Age":"20"}