php中文utf8
‘壹’ php如何获取中文字符串长度 utf8
PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:
PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节。例:
$enStr = ‘Hello,China!’;
echo strlen($enStr); // 输出:12
而中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。
gbk编码下每个中文字符所占字节为2,例:
$zhStr = ‘您好,中国!’;
echo strlen($zhStr); // 输出:12
utf-8编码下每个中文字符所占字节为3,例:
$zhStr = ‘您好,中国!’;
echo strlen($zhStr); // 输出:18
那么如何计算这组中文字符串的长度呢?有人可能会说gbk下获取中文字符串长度除以2,utf-8编码下除以3不就行了吗?但是您要考虑字符串并不老实,99%的情况会以中英混合的情况出现。
这是WordPress中的一段代码,主要思想就是先用正则将字符串分解为个体单元,然后再计算单元的个数即字符串的长度,代码如下(只能处理utf-8编码下的字符串):
$zhStr = ‘您好,中国!’;
$str = ‘Hello,中国!’;
// 计算中文字符串长度
function utf8_strlen($string = null) {
// 将字符串分解为单元
preg_match_all(“/./us”, $string, $match);
// 返回单元个数
return count($match[0]);
}
echo utf8_strlen($zhStr); // 输出:6
echo utf8_strlen($str); // 输出:9
‘贰’ 如何解决PHP在utf-8编码下中文显示乱码问题
如果php文件已经在头部设置编码格式为utf-8,在运行的时候还出现乱码问题,可能是由于文件编码格式不匹配或者头部有bom信息输出导致乱码。解决办法:
设置保存文件编码格式为utf-8;
去掉文件头部bom信息;
‘叁’ 怎么查看php文件是utf8
php如果你没定义字符串的话都是以utf8传递的。如果你文件有继承容器字符串的话就不会默认。每个编缉器都会有查看的。专业的缉编器就更加会有啦。比如Dreamweaver中,页面属性--标题编码里就是了 其它的你自己找找看
‘肆’ php设置成utf-8还是乱码了怎么办
有时后php代码里边设置了“header("Content-type:
text/html;
charset=utf-8");”不一定会管用,因为有时文件本身格式就是错误的,你先把代码复制到一个txt文件里边,然后用代码工具对php文件进行转码成utf-8格式(这时你就会发现里边的代码乱码了,由其是中文和特殊字符),再把txt里边的代码复制覆盖原来的php文件内容,然后保存即可,例如用Notepad++
工具
可以对文件本身进行转码
‘伍’ php 怎么将2进制数据中的中文转换为utf-8
使用以下函数:
string iconv ( string $in_charset , string $out_charset , string $str )
例:
str1 = '汉字'; // 假设此php源文件以GBK编码保存,那么str1就是GBK编码,占4个字节
str2 = iconv('GBK', 'UTF-8', str1); // str2是utf8编码,占6个字节
说明:如果你的php源文件已经以utf8编码保存,就不需要这样转换了。
其它相关函数:
mb_convert_encoding
‘陆’ 如何用php设置utf-8编码
在你的源文件找到<meta http-equiv="content-type" content="text/html;charset=utf-8">charset= 后面接的就是编码,你全部改了就可以了。如果你改了之后变成乱码的话,那你就只能先建一个utf-8编码的网页,把相应的内容重新输入进去。
‘柒’ php中用utf8编码输出中文就是乱码
header("Content-Type: text/html; charset=utf-8");
可以省略,因为在meta已经定义了。
乱码的原因是保存文件时,文件的编码与显示编码不一致,只要另存为一次就好了
‘捌’ 怎样设置php的编码格式为utf-8
在 PHP 编写过程中,一般需要注意的是三种编码:
1、网页字符编码
2、文件字符编码
3、数据库字符编码
只有上面3种编码的格式都一致的情况下,才会尽可能的避免乱码的出现。
二、如何使用Notepad++软件设置UTF-8编码:
用 Notepad++ 软件打开指定的 php 文档后,在“格式”菜单下找到“以UTF-8格式编码"
以xxx编码的意思是不强制转换文件的编码,仅仅以某种编码来查看,不会对文件进行修改,这对打开某个文件发现都是乱码时非常实用。
转为xxx编码的意思就是将文件内容强制转换为某种编码,这对于本来看到的就不是乱码但需要调整右下角的文件编码时非常好用。
‘玖’ PHP中GBK和UTF8编码是怎么回事
GBK编码,是中国通用,UTF-8是国际通用
GBK是定长编码,占两个字节,UTF-8是变长编码,占3到6字节。不过目前来说UTF-8只用到三字节,还没扩展到3字节以上
如果你还需要进一步理解,请搜索它们各自的编码规则
‘拾’ 在PHP中,匹配中文utf8的正则表达式
$str = "编程";
// if(!preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u",$str)) //UTF-8汉字字母数字下划线正则表达式
if(!preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) //UTF-8汉字字母数字下划线正则表达式
{
echo "<font color=red>您输入的[".$str."]含有违法字符</font>";
}
else
{
echo "<font color=green>您输入的[".$str."]完全合法,通过!</font>";
}