php汉字转码,php拼音转汉字

发布时间:2022-11-23

本文目录一览:

  1. php 能实现汉字转url编码的方法吗?
  2. php json_encode使用中文不转码
  3. PHP 输出简单的中文 乱码问题
  4. php搜索 繁体怎么转成简体
  5. php中中文如何转码
  6. 如何正确运用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_STRINGJSON_PRETTY_PRINTJSON_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");
    
    静态页面添加:
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    
    所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。 b. 如果欲使用 utf-8 编码,那么php要输出头:
    header("Content-Type: text/html; charset=utf-8");
    
    静态页面添加:
    <meta http-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编码:
    <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档:

  1. gb.map
  2. 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"}